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,54 @@
|
|
|
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 ora_1 = __importDefault(require("ora"));
|
|
7
|
+
class Spinner {
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
const { text = 'Loading...', color = 'cyan' } = options;
|
|
10
|
+
this.spinner = (0, ora_1.default)({
|
|
11
|
+
text,
|
|
12
|
+
color,
|
|
13
|
+
spinner: 'dots',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
start(text) {
|
|
17
|
+
if (text) {
|
|
18
|
+
this.spinner.text = text;
|
|
19
|
+
}
|
|
20
|
+
this.spinner.start();
|
|
21
|
+
}
|
|
22
|
+
stop() {
|
|
23
|
+
this.spinner.stop();
|
|
24
|
+
}
|
|
25
|
+
succeed(text) {
|
|
26
|
+
if (text) {
|
|
27
|
+
this.spinner.text = text;
|
|
28
|
+
}
|
|
29
|
+
this.spinner.succeed();
|
|
30
|
+
}
|
|
31
|
+
fail(text) {
|
|
32
|
+
if (text) {
|
|
33
|
+
this.spinner.text = text;
|
|
34
|
+
}
|
|
35
|
+
this.spinner.fail();
|
|
36
|
+
}
|
|
37
|
+
warn(text) {
|
|
38
|
+
if (text) {
|
|
39
|
+
this.spinner.text = text;
|
|
40
|
+
}
|
|
41
|
+
this.spinner.warn();
|
|
42
|
+
}
|
|
43
|
+
info(text) {
|
|
44
|
+
if (text) {
|
|
45
|
+
this.spinner.text = text;
|
|
46
|
+
}
|
|
47
|
+
this.spinner.info();
|
|
48
|
+
}
|
|
49
|
+
update(text) {
|
|
50
|
+
this.spinner.text = text;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.default = Spinner;
|
|
54
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":";;;;;AAAA,8CAA+B;AAO/B,MAAM,OAAO;IAGX,YAAY,UAA0B,EAAE;QACtC,MAAM,EAAE,IAAI,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAA,aAAG,EAAC;YACjB,IAAI;YACJ,KAAK;YACL,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,kBAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PayMongoConfig } from '../types/paymongo';
|
|
2
|
+
export declare class ValidationError extends Error {
|
|
3
|
+
field?: string | undefined;
|
|
4
|
+
constructor(message: string, field?: string | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare function validateApiKey(key: string, type: 'public' | 'secret'): boolean;
|
|
7
|
+
export declare function validateWebhookUrl(url: string): boolean;
|
|
8
|
+
export declare function validateConfig(config: Partial<PayMongoConfig>): void;
|
|
9
|
+
export declare function validateEventTypes(events: string[]): void;
|
|
10
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,KAAK,CAAC,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,MAAM,YAAA;CAKxB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAW9E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAsCpE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAczD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationError = void 0;
|
|
4
|
+
exports.validateApiKey = validateApiKey;
|
|
5
|
+
exports.validateWebhookUrl = validateWebhookUrl;
|
|
6
|
+
exports.validateConfig = validateConfig;
|
|
7
|
+
exports.validateEventTypes = validateEventTypes;
|
|
8
|
+
class ValidationError extends Error {
|
|
9
|
+
constructor(message, field) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.field = field;
|
|
12
|
+
this.name = 'ValidationError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ValidationError = ValidationError;
|
|
16
|
+
function validateApiKey(key, type) {
|
|
17
|
+
if (!key || typeof key !== 'string') {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
// PayMongo API keys follow the format: pk_{env}_XXXXXXXXXXXXXXXXXX
|
|
21
|
+
// where env is 'test' or 'live', and X is alphanumeric characters
|
|
22
|
+
const prefix = type === 'public' ? 'pk_' : 'sk_';
|
|
23
|
+
const pattern = new RegExp(`^${prefix}(test|live)_[a-zA-Z0-9]{20,}$`);
|
|
24
|
+
return pattern.test(key);
|
|
25
|
+
}
|
|
26
|
+
function validateWebhookUrl(url) {
|
|
27
|
+
try {
|
|
28
|
+
const parsedUrl = new URL(url);
|
|
29
|
+
return (parsedUrl.protocol === 'https:' ||
|
|
30
|
+
parsedUrl.hostname === 'localhost' ||
|
|
31
|
+
parsedUrl.hostname === '127.0.0.1');
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function validateConfig(config) {
|
|
38
|
+
if (!config.projectName?.trim()) {
|
|
39
|
+
throw new ValidationError('Project name is required', 'projectName');
|
|
40
|
+
}
|
|
41
|
+
if (!config.version) {
|
|
42
|
+
throw new ValidationError('Config version is required', 'version');
|
|
43
|
+
}
|
|
44
|
+
if (!['test', 'live'].includes(config.environment)) {
|
|
45
|
+
throw new ValidationError('Environment must be either "test" or "live"', 'environment');
|
|
46
|
+
}
|
|
47
|
+
const env = config.environment;
|
|
48
|
+
const apiKeys = config.apiKeys?.[env];
|
|
49
|
+
if (!apiKeys?.secret) {
|
|
50
|
+
throw new ValidationError(`Secret API key for ${env} environment is required`, 'apiKeys.secret');
|
|
51
|
+
}
|
|
52
|
+
if (apiKeys.public && !validateApiKey(apiKeys.public, 'public')) {
|
|
53
|
+
throw new ValidationError('Invalid public API key format', 'apiKeys.public');
|
|
54
|
+
}
|
|
55
|
+
if (!validateApiKey(apiKeys.secret, 'secret')) {
|
|
56
|
+
throw new ValidationError('Invalid secret API key format', 'apiKeys.secret');
|
|
57
|
+
}
|
|
58
|
+
if (config.webhooks?.url && !validateWebhookUrl(config.webhooks.url)) {
|
|
59
|
+
throw new ValidationError('Invalid webhook URL. Must be HTTPS or localhost', 'webhooks.url');
|
|
60
|
+
}
|
|
61
|
+
if (config.dev?.port !== undefined && (config.dev.port < 1 || config.dev.port > 65535)) {
|
|
62
|
+
throw new ValidationError('Port must be between 1 and 65535', 'dev.port');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function validateEventTypes(events) {
|
|
66
|
+
const validEvents = [
|
|
67
|
+
'payment.paid',
|
|
68
|
+
'payment.failed',
|
|
69
|
+
'payment.refunded',
|
|
70
|
+
'source.chargeable',
|
|
71
|
+
'checkout_session.payment.paid',
|
|
72
|
+
'qrph.expired',
|
|
73
|
+
];
|
|
74
|
+
const invalidEvents = events.filter((event) => !validEvents.includes(event));
|
|
75
|
+
if (invalidEvents.length > 0) {
|
|
76
|
+
throw new ValidationError(`Invalid event types: ${invalidEvents.join(', ')}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "paymongo-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Developer-first CLI tool for PayMongo integration development with local webhook forwarding, payment testing, and team collaboration features. See USER_GUIDE.md for comprehensive documentation.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"paymongo": "bin/paymongo.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"build:incremental": "tsc --incremental",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"test:watch": "jest --watch",
|
|
16
|
+
"lint": "eslint src/**/*.ts tests/**/*.ts",
|
|
17
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
18
|
+
"format": "prettier --write src/**/*.ts",
|
|
19
|
+
"benchmark": "npx ts-node scripts/benchmark.ts",
|
|
20
|
+
"prepare": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"paymongo",
|
|
24
|
+
"cli",
|
|
25
|
+
"payments",
|
|
26
|
+
"webhooks",
|
|
27
|
+
"development"
|
|
28
|
+
],
|
|
29
|
+
"author": "Leodyver Semilla",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/leodyversemilla07/paymongo-cli.git"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/leodyversemilla07/paymongo-cli/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/leodyversemilla07/paymongo-cli#readme",
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18.0.0"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@ngrok/ngrok": "^1.7.0",
|
|
44
|
+
"@types/express": "^5.0.6",
|
|
45
|
+
"axios": "^1.6.0",
|
|
46
|
+
"chalk": "^5.3.0",
|
|
47
|
+
"commander": "^11.1.0",
|
|
48
|
+
"cosmiconfig": "^8.3.6",
|
|
49
|
+
"express": "^5.2.1",
|
|
50
|
+
"inquirer": "^9.2.12",
|
|
51
|
+
"ora": "^7.0.1",
|
|
52
|
+
"socket.io": "^4.8.3",
|
|
53
|
+
"winston": "^3.11.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/inquirer": "^9.0.7",
|
|
57
|
+
"@types/jest": "^29.5.8",
|
|
58
|
+
"@types/node": "^20.10.0",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
|
60
|
+
"@typescript-eslint/parser": "^6.14.0",
|
|
61
|
+
"eslint": "^8.55.0",
|
|
62
|
+
"jest": "^29.7.0",
|
|
63
|
+
"prettier": "^3.1.1",
|
|
64
|
+
"ts-jest": "^29.1.1",
|
|
65
|
+
"typescript": "^5.3.3"
|
|
66
|
+
},
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public"
|
|
69
|
+
}
|
|
70
|
+
}
|