@keplog/cli 0.2.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 (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +495 -0
  3. package/bin/keplog +2 -0
  4. package/dist/commands/delete.d.ts +3 -0
  5. package/dist/commands/delete.d.ts.map +1 -0
  6. package/dist/commands/delete.js +158 -0
  7. package/dist/commands/delete.js.map +1 -0
  8. package/dist/commands/init.d.ts +3 -0
  9. package/dist/commands/init.d.ts.map +1 -0
  10. package/dist/commands/init.js +131 -0
  11. package/dist/commands/init.js.map +1 -0
  12. package/dist/commands/issues.d.ts +3 -0
  13. package/dist/commands/issues.d.ts.map +1 -0
  14. package/dist/commands/issues.js +543 -0
  15. package/dist/commands/issues.js.map +1 -0
  16. package/dist/commands/list.d.ts +3 -0
  17. package/dist/commands/list.d.ts.map +1 -0
  18. package/dist/commands/list.js +104 -0
  19. package/dist/commands/list.js.map +1 -0
  20. package/dist/commands/releases.d.ts +3 -0
  21. package/dist/commands/releases.d.ts.map +1 -0
  22. package/dist/commands/releases.js +100 -0
  23. package/dist/commands/releases.js.map +1 -0
  24. package/dist/commands/upload.d.ts +3 -0
  25. package/dist/commands/upload.d.ts.map +1 -0
  26. package/dist/commands/upload.js +76 -0
  27. package/dist/commands/upload.js.map +1 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +28 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/lib/config.d.ts +57 -0
  33. package/dist/lib/config.d.ts.map +1 -0
  34. package/dist/lib/config.js +155 -0
  35. package/dist/lib/config.js.map +1 -0
  36. package/dist/lib/uploader.d.ts +11 -0
  37. package/dist/lib/uploader.d.ts.map +1 -0
  38. package/dist/lib/uploader.js +171 -0
  39. package/dist/lib/uploader.js.map +1 -0
  40. package/jest.config.js +16 -0
  41. package/package.json +58 -0
  42. package/src/commands/delete.ts +186 -0
  43. package/src/commands/init.ts +137 -0
  44. package/src/commands/issues.ts +695 -0
  45. package/src/commands/list.ts +124 -0
  46. package/src/commands/releases.ts +122 -0
  47. package/src/commands/upload.ts +76 -0
  48. package/src/index.ts +31 -0
  49. package/src/lib/config.ts +138 -0
  50. package/src/lib/uploader.ts +168 -0
  51. package/tests/README.md +380 -0
  52. package/tests/config.test.ts +397 -0
  53. package/tests/uploader.test.ts +524 -0
  54. package/tsconfig.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SAmIpB,CAAC"}
@@ -0,0 +1,131 @@
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.initCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const prompts_1 = __importDefault(require("prompts"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const config_1 = require("../lib/config");
11
+ exports.initCommand = new commander_1.Command('init')
12
+ .description('Initialize Keplog configuration for the current project')
13
+ .option('-g, --global', 'Save configuration globally (in ~/.keplogrc)')
14
+ .option('-f, --force', 'Overwrite existing configuration')
15
+ .action(async (options) => {
16
+ try {
17
+ const isGlobal = options.global || false;
18
+ const force = options.force || false;
19
+ console.log(chalk_1.default.bold.cyan('\nšŸš€ Keplog CLI Configuration\n'));
20
+ // Check if config already exists
21
+ const hasLocal = config_1.ConfigManager.hasLocalConfig();
22
+ const hasGlobal = config_1.ConfigManager.hasGlobalConfig();
23
+ if (!force) {
24
+ if (isGlobal && hasGlobal) {
25
+ console.log(chalk_1.default.yellow('āš ļø Global configuration already exists at ~/.keplogrc'));
26
+ const { overwrite } = await (0, prompts_1.default)({
27
+ type: 'confirm',
28
+ name: 'overwrite',
29
+ message: 'Do you want to overwrite it?',
30
+ initial: false,
31
+ });
32
+ if (!overwrite) {
33
+ console.log(chalk_1.default.gray('\nConfiguration cancelled.'));
34
+ return;
35
+ }
36
+ }
37
+ else if (!isGlobal && hasLocal) {
38
+ const configPath = config_1.ConfigManager.getLocalConfigPath();
39
+ console.log(chalk_1.default.yellow(`āš ļø Configuration already exists at ${configPath}`));
40
+ const { overwrite } = await (0, prompts_1.default)({
41
+ type: 'confirm',
42
+ name: 'overwrite',
43
+ message: 'Do you want to overwrite it?',
44
+ initial: false,
45
+ });
46
+ if (!overwrite) {
47
+ console.log(chalk_1.default.gray('\nConfiguration cancelled.'));
48
+ return;
49
+ }
50
+ }
51
+ }
52
+ // Read existing config (if any)
53
+ const existingConfig = config_1.ConfigManager.readConfig();
54
+ // Interactive prompts
55
+ console.log(chalk_1.default.gray('Get your credentials from: Project Settings → General → Project Credentials\n'));
56
+ const responses = await (0, prompts_1.default)([
57
+ {
58
+ type: 'text',
59
+ name: 'projectId',
60
+ message: 'Project ID:',
61
+ initial: existingConfig.projectId || '',
62
+ validate: (value) => value.trim().length > 0 || 'Project ID is required',
63
+ },
64
+ {
65
+ type: 'password',
66
+ name: 'apiKey',
67
+ message: 'API Key:',
68
+ initial: existingConfig.apiKey || '',
69
+ validate: (value) => value.trim().length > 0 || 'API Key is required',
70
+ },
71
+ {
72
+ type: 'text',
73
+ name: 'apiUrl',
74
+ message: 'API URL (optional):',
75
+ initial: existingConfig.apiUrl || 'https://api.keplog.com',
76
+ },
77
+ {
78
+ type: 'text',
79
+ name: 'projectName',
80
+ message: 'Project name (optional):',
81
+ initial: existingConfig.projectName || '',
82
+ },
83
+ ]);
84
+ // Check if user cancelled
85
+ if (!responses.projectId || !responses.apiKey) {
86
+ console.log(chalk_1.default.gray('\nConfiguration cancelled.'));
87
+ return;
88
+ }
89
+ // Prepare config
90
+ const config = {
91
+ projectId: responses.projectId.trim(),
92
+ apiKey: responses.apiKey.trim(),
93
+ apiUrl: responses.apiUrl?.trim() || 'https://api.keplog.com',
94
+ projectName: responses.projectName?.trim() || undefined,
95
+ };
96
+ // Save config
97
+ if (isGlobal) {
98
+ config_1.ConfigManager.writeGlobalConfig(config);
99
+ console.log(chalk_1.default.green('\nāœ… Configuration saved globally to ~/.keplogrc'));
100
+ }
101
+ else {
102
+ config_1.ConfigManager.writeLocalConfig(config);
103
+ console.log(chalk_1.default.green('\nāœ… Configuration saved to .keplog.json'));
104
+ console.log(chalk_1.default.gray('\nTip: Add .keplog.json to .gitignore to keep credentials secret'));
105
+ }
106
+ // Display saved config
107
+ console.log(chalk_1.default.cyan('\nšŸ“ Saved configuration:'));
108
+ console.log(chalk_1.default.gray(` Project ID: ${config.projectId}`));
109
+ console.log(chalk_1.default.gray(` API Key: ${'*'.repeat(Math.min(config.apiKey.length, 20))}...`));
110
+ console.log(chalk_1.default.gray(` API URL: ${config.apiUrl}`));
111
+ if (config.projectName) {
112
+ console.log(chalk_1.default.gray(` Project Name: ${config.projectName}`));
113
+ }
114
+ console.log(chalk_1.default.cyan('\nšŸ’” Next steps:'));
115
+ console.log(chalk_1.default.gray(' 1. Upload source maps: keplog upload --release=v1.0.0 --files="dist/**/*.map"'));
116
+ console.log(chalk_1.default.gray(' 2. View help: keplog upload --help'));
117
+ console.log();
118
+ }
119
+ catch (error) {
120
+ if (error.message === 'canceled') {
121
+ console.log(chalk_1.default.gray('\n\nConfiguration cancelled.'));
122
+ process.exit(0);
123
+ }
124
+ console.error(chalk_1.default.red(`\nāŒ Error: ${error.message}`));
125
+ if (error.stack && process.env.DEBUG) {
126
+ console.error(chalk_1.default.gray(error.stack));
127
+ }
128
+ process.exit(1);
129
+ }
130
+ });
131
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,sDAA8B;AAC9B,kDAA0B;AAC1B,0CAA8C;AAEjC,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,cAAc,EAAE,8CAA8C,CAAC;KACtE,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAEhE,iCAAiC;QACjC,MAAM,QAAQ,GAAG,sBAAa,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,sBAAa,CAAC,eAAe,EAAE,CAAC;QAElD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;gBACpF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,iBAAO,EAAC;oBAClC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,8BAA8B;oBACvC,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACtD,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,sBAAa,CAAC,kBAAkB,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uCAAuC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC/E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,iBAAO,EAAC;oBAClC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,8BAA8B;oBACvC,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACtD,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,cAAc,GAAG,sBAAa,CAAC,UAAU,EAAE,CAAC;QAElD,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC,CAAC;QAEzG,MAAM,SAAS,GAAG,MAAM,IAAA,iBAAO,EAAC;YAC9B;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,cAAc,CAAC,SAAS,IAAI,EAAE;gBACvC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAwB;aACjF;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,cAAc,CAAC,MAAM,IAAI,EAAE;gBACpC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB;aAC9E;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,cAAc,CAAC,MAAM,IAAI,wBAAwB;aAC3D;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,cAAc,CAAC,WAAW,IAAI,EAAE;aAC1C;SACF,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;YACrC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,wBAAwB;YAC5D,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,SAAS;SACxD,CAAC;QAEF,cAAc;QACd,IAAI,QAAQ,EAAE,CAAC;YACb,sBAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,sBAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;QAC9F,CAAC;QAED,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC,CAAC;QAC5G,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const issuesCommand: Command;
3
+ //# sourceMappingURL=issues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwnBpC,eAAO,MAAM,aAAa,SAIK,CAAC"}