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.
Files changed (107) hide show
  1. package/.github/ISSUE_TEMPLATE/bug-report.md +33 -0
  2. package/.github/PULL_REQUEST_TEMPLATE.md +30 -0
  3. package/.github/workflows/ci-cd.yml +88 -0
  4. package/.github/workflows/ci.yml +46 -0
  5. package/.github/workflows/release.yml +54 -0
  6. package/LICENSE +21 -0
  7. package/README.md +113 -0
  8. package/bin/paymongo.js +3 -0
  9. package/dist/.tsbuildinfo +1 -0
  10. package/dist/commands/config.d.ts +4 -0
  11. package/dist/commands/config.d.ts.map +1 -0
  12. package/dist/commands/config.js +398 -0
  13. package/dist/commands/config.js.map +1 -0
  14. package/dist/commands/dev.d.ts +4 -0
  15. package/dist/commands/dev.d.ts.map +1 -0
  16. package/dist/commands/dev.js +353 -0
  17. package/dist/commands/dev.js.map +1 -0
  18. package/dist/commands/gui.d.ts +4 -0
  19. package/dist/commands/gui.d.ts.map +1 -0
  20. package/dist/commands/gui.js +74 -0
  21. package/dist/commands/gui.js.map +1 -0
  22. package/dist/commands/init.d.ts +4 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +268 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/login.d.ts +4 -0
  27. package/dist/commands/login.d.ts.map +1 -0
  28. package/dist/commands/login.js +287 -0
  29. package/dist/commands/login.js.map +1 -0
  30. package/dist/commands/payments.d.ts +4 -0
  31. package/dist/commands/payments.d.ts.map +1 -0
  32. package/dist/commands/payments.js +180 -0
  33. package/dist/commands/payments.js.map +1 -0
  34. package/dist/commands/team/index.d.ts +4 -0
  35. package/dist/commands/team/index.d.ts.map +1 -0
  36. package/dist/commands/team/index.js +155 -0
  37. package/dist/commands/team/index.js.map +1 -0
  38. package/dist/commands/trigger.d.ts +4 -0
  39. package/dist/commands/trigger.d.ts.map +1 -0
  40. package/dist/commands/trigger.js +312 -0
  41. package/dist/commands/trigger.js.map +1 -0
  42. package/dist/commands/webhooks.d.ts +4 -0
  43. package/dist/commands/webhooks.d.ts.map +1 -0
  44. package/dist/commands/webhooks.js +357 -0
  45. package/dist/commands/webhooks.js.map +1 -0
  46. package/dist/index.d.ts +3 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +61 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/services/analytics/service.d.ts +29 -0
  51. package/dist/services/analytics/service.d.ts.map +1 -0
  52. package/dist/services/analytics/service.js +97 -0
  53. package/dist/services/analytics/service.js.map +1 -0
  54. package/dist/services/api/client.d.ts +27 -0
  55. package/dist/services/api/client.d.ts.map +1 -0
  56. package/dist/services/api/client.js +151 -0
  57. package/dist/services/api/client.js.map +1 -0
  58. package/dist/services/config/manager.d.ts +16 -0
  59. package/dist/services/config/manager.d.ts.map +1 -0
  60. package/dist/services/config/manager.js +211 -0
  61. package/dist/services/config/manager.js.map +1 -0
  62. package/dist/services/github/auth.d.ts +15 -0
  63. package/dist/services/github/auth.d.ts.map +1 -0
  64. package/dist/services/github/auth.js +119 -0
  65. package/dist/services/github/auth.js.map +1 -0
  66. package/dist/services/github/client.d.ts +54 -0
  67. package/dist/services/github/client.d.ts.map +1 -0
  68. package/dist/services/github/client.js +107 -0
  69. package/dist/services/github/client.js.map +1 -0
  70. package/dist/services/github/sync.d.ts +26 -0
  71. package/dist/services/github/sync.d.ts.map +1 -0
  72. package/dist/services/github/sync.js +200 -0
  73. package/dist/services/github/sync.js.map +1 -0
  74. package/dist/services/web/server.d.ts +30 -0
  75. package/dist/services/web/server.d.ts.map +1 -0
  76. package/dist/services/web/server.js +159 -0
  77. package/dist/services/web/server.js.map +1 -0
  78. package/dist/types/paymongo.d.ts +118 -0
  79. package/dist/types/paymongo.d.ts.map +1 -0
  80. package/dist/types/paymongo.js +3 -0
  81. package/dist/types/paymongo.js.map +1 -0
  82. package/dist/utils/cache.d.ts +20 -0
  83. package/dist/utils/cache.d.ts.map +1 -0
  84. package/dist/utils/cache.js +164 -0
  85. package/dist/utils/cache.js.map +1 -0
  86. package/dist/utils/constants.d.ts +32 -0
  87. package/dist/utils/constants.d.ts.map +1 -0
  88. package/dist/utils/constants.js +52 -0
  89. package/dist/utils/constants.js.map +1 -0
  90. package/dist/utils/errors.d.ts +33 -0
  91. package/dist/utils/errors.d.ts.map +1 -0
  92. package/dist/utils/errors.js +79 -0
  93. package/dist/utils/errors.js.map +1 -0
  94. package/dist/utils/logger.d.ts +17 -0
  95. package/dist/utils/logger.d.ts.map +1 -0
  96. package/dist/utils/logger.js +53 -0
  97. package/dist/utils/logger.js.map +1 -0
  98. package/dist/utils/spinner.d.ts +17 -0
  99. package/dist/utils/spinner.d.ts.map +1 -0
  100. package/dist/utils/spinner.js +54 -0
  101. package/dist/utils/spinner.js.map +1 -0
  102. package/dist/utils/validator.d.ts +10 -0
  103. package/dist/utils/validator.d.ts.map +1 -0
  104. package/dist/utils/validator.js +79 -0
  105. package/dist/utils/validator.js.map +1 -0
  106. package/package.json +70 -0
  107. package/web/index.html +688 -0
@@ -0,0 +1,357 @@
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
+ const commander_1 = require("commander");
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const manager_1 = __importDefault(require("../services/config/manager"));
10
+ const client_1 = __importDefault(require("../services/api/client"));
11
+ const spinner_1 = __importDefault(require("../utils/spinner"));
12
+ const validator_1 = require("../utils/validator");
13
+ const command = new commander_1.Command('webhooks');
14
+ command
15
+ .description('Manage webhooks')
16
+ .addCommand(new commander_1.Command('create')
17
+ .description('Create a new webhook')
18
+ .option('-u, --url <url>', 'Webhook URL')
19
+ .option('-e, --events <events>', 'Comma-separated events to listen for')
20
+ .action(async (options) => {
21
+ const spinner = new spinner_1.default();
22
+ const configManager = new manager_1.default();
23
+ try {
24
+ // Load configuration
25
+ spinner.start('Loading configuration...');
26
+ const config = await configManager.load();
27
+ if (!config) {
28
+ spinner.fail('No configuration found');
29
+ console.log(chalk_1.default.yellow('No PayMongo configuration found.'));
30
+ console.log(chalk_1.default.gray('Run \'paymongo init\' to set up your project first.'));
31
+ return;
32
+ }
33
+ spinner.succeed('Configuration loaded');
34
+ let answers;
35
+ if (options.url && options.events) {
36
+ // Non-interactive mode
37
+ answers = {
38
+ url: options.url,
39
+ events: options.events.split(','),
40
+ };
41
+ }
42
+ else {
43
+ // Interactive mode
44
+ answers = await inquirer_1.default.prompt([
45
+ {
46
+ type: 'input',
47
+ name: 'url',
48
+ message: 'Webhook URL:',
49
+ default: options.url,
50
+ validate: (input) => {
51
+ if (!input) {
52
+ return 'Webhook URL is required';
53
+ }
54
+ if (!(0, validator_1.validateWebhookUrl)(input)) {
55
+ return 'Invalid webhook URL. Must be HTTPS or localhost';
56
+ }
57
+ return true;
58
+ },
59
+ },
60
+ {
61
+ type: 'checkbox',
62
+ name: 'events',
63
+ message: 'Select events to listen for:',
64
+ choices: [
65
+ { name: 'payment.paid - Payment successful', value: 'payment.paid', checked: true },
66
+ { name: 'payment.failed - Payment failed', value: 'payment.failed', checked: true },
67
+ { name: 'payment.refunded - Payment refunded', value: 'payment.refunded' },
68
+ { name: 'source.chargeable - Source ready for charging', value: 'source.chargeable' },
69
+ { name: 'checkout_session.payment.paid - Checkout payment successful', value: 'checkout_session.payment.paid' },
70
+ { name: 'qrph.expired - QR Ph expired', value: 'qrph.expired' },
71
+ ],
72
+ default: options.events ? options.events.split(',') : ['payment.paid', 'payment.failed'],
73
+ validate: (input) => {
74
+ if (input.length === 0) {
75
+ return 'At least one event must be selected';
76
+ }
77
+ try {
78
+ (0, validator_1.validateEventTypes)(input);
79
+ return true;
80
+ }
81
+ catch {
82
+ return 'Invalid event types selected';
83
+ }
84
+ },
85
+ },
86
+ ]);
87
+ }
88
+ // Validate inputs
89
+ if (!(0, validator_1.validateWebhookUrl)(answers.url)) {
90
+ throw new Error('Invalid webhook URL');
91
+ }
92
+ try {
93
+ (0, validator_1.validateEventTypes)(answers.events);
94
+ }
95
+ catch {
96
+ throw new Error('Invalid event types');
97
+ }
98
+ // Create webhook
99
+ spinner.start('Creating webhook...');
100
+ const apiClient = new client_1.default({ config });
101
+ const webhook = await apiClient.createWebhook(answers.url, answers.events);
102
+ spinner.succeed('Webhook created successfully');
103
+ // Store webhook secret if available
104
+ if (webhook.attributes?.secret) {
105
+ config.webhookSecrets = config.webhookSecrets || {};
106
+ config.webhookSecrets[webhook.id] = webhook.attributes.secret;
107
+ await configManager.save(config);
108
+ }
109
+ // Display result
110
+ console.log('\n' + chalk_1.default.green('✓ Webhook created successfully!'));
111
+ console.log('');
112
+ console.log(chalk_1.default.bold('ID:'), webhook.id);
113
+ console.log(chalk_1.default.bold('URL:'), webhook.attributes.url);
114
+ console.log(chalk_1.default.bold('Events:'), webhook.attributes.events.join(', '));
115
+ console.log(chalk_1.default.bold('Status:'), webhook.attributes.status);
116
+ if (webhook.attributes?.secret) {
117
+ console.log(chalk_1.default.bold('Signature:'), 'Enabled (secret stored securely)');
118
+ }
119
+ }
120
+ catch (error) {
121
+ spinner.stop();
122
+ const err = error;
123
+ if (err.message.includes('API key') || err.message.includes('unauthorized')) {
124
+ console.error(chalk_1.default.red('❌ Authentication failed:'), err.message);
125
+ console.log('');
126
+ console.log(chalk_1.default.yellow('💡 Solutions:'));
127
+ console.log(chalk_1.default.gray('• Run "paymongo login" to update your API keys'));
128
+ console.log(chalk_1.default.gray('• Check that your API keys are valid in the PayMongo dashboard'));
129
+ }
130
+ else if (err.message.includes('Network') || err.message.includes('connection')) {
131
+ console.error(chalk_1.default.red('❌ Network error:'), err.message);
132
+ console.log('');
133
+ console.log(chalk_1.default.yellow('💡 Try again:'));
134
+ console.log(chalk_1.default.gray('• Check your internet connection'));
135
+ console.log(chalk_1.default.gray('• PayMongo API might be temporarily unavailable'));
136
+ }
137
+ else if (err.message.includes('url') || err.message.includes('webhook')) {
138
+ console.error(chalk_1.default.red('❌ Webhook error:'), err.message);
139
+ console.log('');
140
+ console.log(chalk_1.default.yellow('💡 Check:'));
141
+ console.log(chalk_1.default.gray('• Webhook URL must be HTTPS in production'));
142
+ console.log(chalk_1.default.gray('• Localhost URLs only work with ngrok tunnels'));
143
+ console.log(chalk_1.default.gray('• URL must be accessible from PayMongo\'s servers'));
144
+ }
145
+ else {
146
+ console.error(chalk_1.default.red('❌ Failed to create webhook:'), err.message);
147
+ console.log('');
148
+ console.log(chalk_1.default.yellow('💡 For help, visit: https://developers.paymongo.com/docs/webhooks'));
149
+ }
150
+ process.exit(1);
151
+ }
152
+ }))
153
+ .addCommand(new commander_1.Command('list')
154
+ .description('List all webhooks')
155
+ .option('-j, --json', 'Output as JSON')
156
+ .option('-s, --status <status>', 'Filter by status (enabled/disabled)')
157
+ .action(async (options) => {
158
+ const spinner = new spinner_1.default();
159
+ const configManager = new manager_1.default();
160
+ try {
161
+ // Load configuration
162
+ spinner.start('Loading configuration...');
163
+ const config = await configManager.load();
164
+ if (!config) {
165
+ spinner.fail('No configuration found');
166
+ console.log(chalk_1.default.yellow('No PayMongo configuration found.'));
167
+ console.log(chalk_1.default.gray('Run \'paymongo init\' to set up your project first.'));
168
+ return;
169
+ }
170
+ spinner.succeed('Configuration loaded');
171
+ // List webhooks
172
+ spinner.start('Fetching webhooks...');
173
+ const apiClient = new client_1.default({ config });
174
+ const webhooks = await apiClient.listWebhooks();
175
+ spinner.succeed(`Found ${webhooks.length} webhook${webhooks.length !== 1 ? 's' : ''}`);
176
+ if (webhooks.length === 0) {
177
+ console.log(chalk_1.default.gray('No webhooks found.'));
178
+ console.log(chalk_1.default.gray('Create one with: paymongo webhooks create'));
179
+ return;
180
+ }
181
+ // Filter by status if specified
182
+ let filteredWebhooks = webhooks;
183
+ if (options.status) {
184
+ filteredWebhooks = webhooks.filter(w => w.attributes.status === options.status);
185
+ }
186
+ if (options.json) {
187
+ console.log(JSON.stringify(filteredWebhooks, null, 2));
188
+ return;
189
+ }
190
+ // Display table
191
+ console.log('\nWebhooks (' + filteredWebhooks.length + ' total)');
192
+ console.log('');
193
+ console.log('┌──────────────┬─────────────────────────┬───────────┬──────────────────────┐');
194
+ console.log('│ ID │ URL │ Status │ Events │');
195
+ console.log('├──────────────┼─────────────────────────┼───────────┼──────────────────────┤');
196
+ filteredWebhooks.forEach(webhook => {
197
+ const id = webhook.id.substring(0, 12) + '...';
198
+ const url = webhook.attributes.url.length > 23
199
+ ? webhook.attributes.url.substring(0, 20) + '...'
200
+ : webhook.attributes.url;
201
+ const status = webhook.attributes.status;
202
+ const events = webhook.attributes.events.length > 1
203
+ ? `${webhook.attributes.events[0]} +${webhook.attributes.events.length - 1} more`
204
+ : webhook.attributes.events[0] || 'None';
205
+ console.log(`│ ${id.padEnd(12)} │ ${url.padEnd(23)} │ ${status.padEnd(9)} │ ${events.padEnd(20)} │`);
206
+ });
207
+ console.log('└──────────────┴─────────────────────────┴───────────┴──────────────────────┘');
208
+ console.log('');
209
+ console.log(chalk_1.default.gray('Use \'paymongo webhooks show <id>\' for details'));
210
+ }
211
+ catch (error) {
212
+ spinner.stop();
213
+ const err = error;
214
+ if (err.message.includes('API key') || err.message.includes('unauthorized')) {
215
+ console.error(chalk_1.default.red('❌ Authentication failed:'), err.message);
216
+ console.log('');
217
+ console.log(chalk_1.default.yellow('💡 Solutions:'));
218
+ console.log(chalk_1.default.gray('• Run "paymongo login" to update your API keys'));
219
+ console.log(chalk_1.default.gray('• Check that your API keys are valid in the PayMongo dashboard'));
220
+ }
221
+ else if (err.message.includes('Network') || err.message.includes('connection')) {
222
+ console.error(chalk_1.default.red('❌ Network error:'), err.message);
223
+ console.log('');
224
+ console.log(chalk_1.default.yellow('💡 Try again:'));
225
+ console.log(chalk_1.default.gray('• Check your internet connection'));
226
+ console.log(chalk_1.default.gray('• PayMongo API might be temporarily unavailable'));
227
+ }
228
+ else {
229
+ console.error(chalk_1.default.red('❌ Failed to list webhooks:'), err.message);
230
+ }
231
+ process.exit(1);
232
+ }
233
+ }))
234
+ .addCommand(new commander_1.Command('delete')
235
+ .description('Delete a webhook')
236
+ .argument('<id>', 'Webhook ID to delete')
237
+ .option('-y, --yes', 'Skip confirmation prompt')
238
+ .action(async (id, options) => {
239
+ const spinner = new spinner_1.default();
240
+ const configManager = new manager_1.default();
241
+ try {
242
+ // Load configuration
243
+ spinner.start('Loading configuration...');
244
+ const config = await configManager.load();
245
+ if (!config) {
246
+ spinner.fail('No configuration found');
247
+ console.log(chalk_1.default.yellow('No PayMongo configuration found.'));
248
+ console.log(chalk_1.default.gray('Run \'paymongo init\' to set up your project first.'));
249
+ return;
250
+ }
251
+ spinner.succeed('Configuration loaded');
252
+ // Confirm deletion
253
+ if (!options.yes) {
254
+ const { confirm } = await inquirer_1.default.prompt([
255
+ {
256
+ type: 'confirm',
257
+ name: 'confirm',
258
+ message: `This will permanently delete webhook ${id}. Continue?`,
259
+ default: false,
260
+ },
261
+ ]);
262
+ if (!confirm) {
263
+ console.log(chalk_1.default.yellow('Webhook deletion cancelled.'));
264
+ return;
265
+ }
266
+ }
267
+ // Delete webhook
268
+ spinner.start('Deleting webhook...');
269
+ const apiClient = new client_1.default({ config });
270
+ await apiClient.deleteWebhook(id);
271
+ spinner.succeed('Webhook deleted successfully');
272
+ console.log(chalk_1.default.green('✓ Webhook deleted successfully'));
273
+ }
274
+ catch (error) {
275
+ spinner.stop();
276
+ const err = error;
277
+ if (err.message.includes('API key') || err.message.includes('unauthorized')) {
278
+ console.error(chalk_1.default.red('❌ Authentication failed:'), err.message);
279
+ console.log('');
280
+ console.log(chalk_1.default.yellow('💡 Solutions:'));
281
+ console.log(chalk_1.default.gray('• Run "paymongo login" to update your API keys'));
282
+ console.log(chalk_1.default.gray('• Check that your API keys are valid in the PayMongo dashboard'));
283
+ }
284
+ else if (err.message.includes('not found') || err.message.includes('404')) {
285
+ console.error(chalk_1.default.red('❌ Webhook not found:'), err.message);
286
+ console.log('');
287
+ console.log(chalk_1.default.yellow('💡 Check:'));
288
+ console.log(chalk_1.default.gray('• Verify the webhook ID is correct'));
289
+ console.log(chalk_1.default.gray('• Use "paymongo webhooks list" to see available webhooks'));
290
+ }
291
+ else {
292
+ console.error(chalk_1.default.red('❌ Failed to delete webhook:'), err.message);
293
+ }
294
+ process.exit(1);
295
+ }
296
+ }))
297
+ .addCommand(new commander_1.Command('show')
298
+ .description('Show webhook details')
299
+ .argument('<id>', 'Webhook ID to show')
300
+ .action(async (id) => {
301
+ const spinner = new spinner_1.default();
302
+ const configManager = new manager_1.default();
303
+ try {
304
+ // Load configuration
305
+ spinner.start('Loading configuration...');
306
+ const config = await configManager.load();
307
+ if (!config) {
308
+ spinner.fail('No configuration found');
309
+ console.log(chalk_1.default.yellow('No PayMongo configuration found.'));
310
+ console.log(chalk_1.default.gray('Run \'paymongo init\' to set up your project first.'));
311
+ return;
312
+ }
313
+ spinner.succeed('Configuration loaded');
314
+ // Get webhook details
315
+ spinner.start('Fetching webhook details...');
316
+ const apiClient = new client_1.default({ config });
317
+ const webhook = await apiClient.getWebhook(id);
318
+ spinner.succeed('Webhook details loaded');
319
+ // Display details
320
+ console.log('\n' + chalk_1.default.bold('Webhook Details'));
321
+ console.log('═'.repeat(50));
322
+ console.log(chalk_1.default.bold('ID:'), webhook.id);
323
+ console.log(chalk_1.default.bold('URL:'), webhook.attributes.url);
324
+ console.log(chalk_1.default.bold('Status:'), webhook.attributes.status);
325
+ console.log(chalk_1.default.bold('Created:'), new Date(webhook.attributes.created_at * 1000).toLocaleString());
326
+ console.log(chalk_1.default.bold('Updated:'), new Date(webhook.attributes.updated_at * 1000).toLocaleString());
327
+ console.log('');
328
+ console.log(chalk_1.default.bold('Events:'));
329
+ webhook.attributes.events.forEach((event) => {
330
+ console.log(` • ${event}`);
331
+ });
332
+ }
333
+ catch (error) {
334
+ spinner.stop();
335
+ const err = error;
336
+ if (err.message.includes('API key') || err.message.includes('unauthorized')) {
337
+ console.error(chalk_1.default.red('❌ Authentication failed:'), err.message);
338
+ console.log('');
339
+ console.log(chalk_1.default.yellow('💡 Solutions:'));
340
+ console.log(chalk_1.default.gray('• Run "paymongo login" to update your API keys'));
341
+ console.log(chalk_1.default.gray('• Check that your API keys are valid in the PayMongo dashboard'));
342
+ }
343
+ else if (err.message.includes('not found') || err.message.includes('404')) {
344
+ console.error(chalk_1.default.red('❌ Webhook not found:'), err.message);
345
+ console.log('');
346
+ console.log(chalk_1.default.yellow('💡 Check:'));
347
+ console.log(chalk_1.default.gray('• Verify the webhook ID is correct'));
348
+ console.log(chalk_1.default.gray('• Use "paymongo webhooks list" to see available webhooks'));
349
+ }
350
+ else {
351
+ console.error(chalk_1.default.red('❌ Failed to get webhook details:'), err.message);
352
+ }
353
+ process.exit(1);
354
+ }
355
+ }));
356
+ exports.default = command;
357
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const package_json_1 = require("../package.json");
10
+ // Import commands
11
+ const init_1 = __importDefault(require("./commands/init"));
12
+ const dev_1 = __importDefault(require("./commands/dev"));
13
+ const login_1 = __importDefault(require("./commands/login"));
14
+ const config_1 = __importDefault(require("./commands/config"));
15
+ const webhooks_1 = __importDefault(require("./commands/webhooks"));
16
+ const trigger_1 = __importDefault(require("./commands/trigger"));
17
+ const gui_1 = __importDefault(require("./commands/gui"));
18
+ const team_1 = __importDefault(require("./commands/team"));
19
+ const payments_1 = __importDefault(require("./commands/payments"));
20
+ const program = new commander_1.Command();
21
+ program
22
+ .name('paymongo')
23
+ .description('CLI tool for PayMongo integration development')
24
+ .version(package_json_1.version)
25
+ .showHelpAfterError('(add --help for additional information)');
26
+ program.addCommand(init_1.default);
27
+ program.addCommand(dev_1.default);
28
+ program.addCommand(login_1.default);
29
+ program.addCommand(config_1.default);
30
+ program.addCommand(webhooks_1.default);
31
+ program.addCommand(payments_1.default);
32
+ program.addCommand(trigger_1.default);
33
+ program.addCommand(gui_1.default);
34
+ program.addCommand(team_1.default);
35
+ // Add global help
36
+ program.addHelpText('after', `
37
+ EXAMPLES
38
+ $ paymongo init
39
+ $ paymongo dev --port 4000
40
+ $ paymongo gui
41
+ $ paymongo webhooks list
42
+ $ paymongo payments list
43
+ $ paymongo team sync
44
+
45
+ For more information, visit: https://github.com/leodyversemilla07/paymongo-cli
46
+ `);
47
+ // Global error handler
48
+ process.on('uncaughtException', (error) => {
49
+ console.error(chalk_1.default.red('An unexpected error occurred:'), error.message);
50
+ process.exit(1);
51
+ });
52
+ process.on('unhandledRejection', (reason, promise) => {
53
+ console.error(chalk_1.default.red('Unhandled Rejection at:'), promise, 'reason:', reason);
54
+ process.exit(1);
55
+ });
56
+ program.parse();
57
+ process.on('unhandledRejection', (reason, promise) => {
58
+ console.error(chalk_1.default.red('Unhandled Rejection at:'), promise, 'reason:', reason);
59
+ process.exit(1);
60
+ });
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,kDAA0C;AAE1C,kBAAkB;AAClB,2DAA0C;AAC1C,yDAAwC;AACxC,6DAA4C;AAC5C,+DAA8C;AAC9C,mEAAkD;AAClD,iEAAgD;AAChD,yDAAwC;AACxC,2DAA0C;AAC1C,mEAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,OAAO,CAAC,sBAAO,CAAC;KAChB,kBAAkB,CAAC,yCAAyC,CAAC,CAAC;AAEjE,OAAO,CAAC,UAAU,CAAC,cAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,kBAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,kBAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,iBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,cAAW,CAAC,CAAC;AAEhC,kBAAkB;AAClB,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;;CAUD,CACA,CAAC;AAEF,uBAAuB;AACvB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ export interface WebhookEvent {
2
+ id: string;
3
+ type: string;
4
+ timestamp: number;
5
+ success: boolean;
6
+ error?: string;
7
+ responseTime?: number;
8
+ data?: any;
9
+ }
10
+ export interface AnalyticsData {
11
+ totalEvents: number;
12
+ successRate: number;
13
+ eventsByType: Record<string, number>;
14
+ recentEvents: WebhookEvent[];
15
+ averageResponseTime: number;
16
+ errorsByType: Record<string, number>;
17
+ }
18
+ export declare class AnalyticsService {
19
+ private events;
20
+ private dataFile;
21
+ private logger;
22
+ constructor();
23
+ private loadEvents;
24
+ private saveEvents;
25
+ recordEvent(event: Omit<WebhookEvent, 'id' | 'timestamp'>): void;
26
+ getAnalytics(): AnalyticsData;
27
+ clearAnalytics(): void;
28
+ }
29
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/analytics/service.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;;IAQvB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,UAAU;IAYX,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI;IAiBhE,YAAY,IAAI,aAAa;IAyC7B,cAAc,IAAI,IAAI;CAI9B"}
@@ -0,0 +1,97 @@
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.AnalyticsService = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const logger_1 = __importDefault(require("../../utils/logger"));
10
+ class AnalyticsService {
11
+ constructor() {
12
+ this.events = [];
13
+ this.logger = new logger_1.default();
14
+ this.dataFile = path_1.default.join(process.cwd(), '.paymongo', 'analytics.json');
15
+ this.loadEvents();
16
+ }
17
+ loadEvents() {
18
+ try {
19
+ if (fs_1.default.existsSync(this.dataFile)) {
20
+ const data = JSON.parse(fs_1.default.readFileSync(this.dataFile, 'utf-8'));
21
+ this.events = data.events || [];
22
+ // Keep only last 1000 events
23
+ if (this.events.length > 1000) {
24
+ this.events = this.events.slice(-1000);
25
+ }
26
+ }
27
+ }
28
+ catch (error) {
29
+ this.logger.error('Failed to load analytics data', error);
30
+ this.events = [];
31
+ }
32
+ }
33
+ saveEvents() {
34
+ try {
35
+ const dir = path_1.default.dirname(this.dataFile);
36
+ if (!fs_1.default.existsSync(dir)) {
37
+ fs_1.default.mkdirSync(dir, { recursive: true });
38
+ }
39
+ fs_1.default.writeFileSync(this.dataFile, JSON.stringify({ events: this.events }, null, 2));
40
+ }
41
+ catch (error) {
42
+ this.logger.error('Failed to save analytics data', error);
43
+ }
44
+ }
45
+ recordEvent(event) {
46
+ const webhookEvent = {
47
+ ...event,
48
+ id: `evt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
49
+ timestamp: Date.now(),
50
+ };
51
+ this.events.push(webhookEvent);
52
+ // Keep only last 1000 events
53
+ if (this.events.length > 1000) {
54
+ this.events = this.events.slice(-1000);
55
+ }
56
+ this.saveEvents();
57
+ }
58
+ getAnalytics() {
59
+ const totalEvents = this.events.length;
60
+ const successfulEvents = this.events.filter((e) => e.success).length;
61
+ const successRate = totalEvents > 0 ? (successfulEvents / totalEvents) * 100 : 0;
62
+ const eventsByType = {};
63
+ const errorsByType = {};
64
+ let totalResponseTime = 0;
65
+ let responseTimeCount = 0;
66
+ this.events.forEach((event) => {
67
+ // Count events by type
68
+ eventsByType[event.type] = (eventsByType[event.type] || 0) + 1;
69
+ // Count errors by type
70
+ if (!event.success && event.error) {
71
+ errorsByType[event.type] = (errorsByType[event.type] || 0) + 1;
72
+ }
73
+ // Calculate average response time
74
+ if (event.responseTime !== undefined) {
75
+ totalResponseTime += event.responseTime;
76
+ responseTimeCount++;
77
+ }
78
+ });
79
+ const averageResponseTime = responseTimeCount > 0 ? totalResponseTime / responseTimeCount : 0;
80
+ // Get recent events (last 50)
81
+ const recentEvents = this.events.slice(-50).reverse();
82
+ return {
83
+ totalEvents,
84
+ successRate: Math.round(successRate * 100) / 100,
85
+ eventsByType,
86
+ recentEvents,
87
+ averageResponseTime: Math.round(averageResponseTime * 100) / 100,
88
+ errorsByType,
89
+ };
90
+ }
91
+ clearAnalytics() {
92
+ this.events = [];
93
+ this.saveEvents();
94
+ }
95
+ }
96
+ exports.AnalyticsService = AnalyticsService;
97
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/services/analytics/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface ApiClientOptions {
2
+ config: any;
3
+ timeout?: number;
4
+ enableCache?: boolean;
5
+ }
6
+ export declare class ApiClient {
7
+ private client;
8
+ private config;
9
+ private cache;
10
+ constructor(options: ApiClientOptions);
11
+ private setupInterceptors;
12
+ validateApiKey(): Promise<boolean>;
13
+ createWebhook(url: string, events: string[]): Promise<any>;
14
+ listWebhooks(): Promise<any[]>;
15
+ getWebhook(id: string): Promise<any>;
16
+ updateWebhook(id: string, updates: {
17
+ url?: string;
18
+ events?: string[];
19
+ status?: 'enabled' | 'disabled';
20
+ }): Promise<any>;
21
+ deleteWebhook(id: string): Promise<void>;
22
+ getPayment(id: string): Promise<any>;
23
+ listPayments(limit?: number): Promise<any[]>;
24
+ createPaymentIntent(amount: number, currency?: string, description?: string, paymentMethods?: string[]): Promise<any>;
25
+ }
26
+ export default ApiClient;
27
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/api/client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAQ;gBAET,OAAO,EAAE,gBAAgB;IAkBrC,OAAO,CAAC,iBAAiB;IAyCnB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAoB1D,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAkB9B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAkBpC,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,GAC5E,OAAO,CAAC,GAAG,CAAC;IAgBT,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAMpC,YAAY,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAWhD,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAc,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,GAAE,MAAM,EAAiC,GACtD,OAAO,CAAC,GAAG,CAAC;CAgBhB;AAED,eAAe,SAAS,CAAC"}