errorhub-cli 1.1.6 → 1.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.
@@ -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,365 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import open from 'open';
4
+ import express from 'express';
5
+ import fs from 'fs';
6
+ import os from 'os';
7
+ import path from 'path';
8
+ import net from 'net';
9
+ import { fileURLToPath } from 'url';
10
+ import clc from 'cli-color';
11
+ const program = new Command();
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+ const CONFIG_PATH = path.join(os.homedir(), '.token.json');
15
+ const PROJECTS = path.join(os.homedir(), 'projectId.json');
16
+ // ─── Color Palette ────────────────────────────────────────────────────────────
17
+ const c = {
18
+ cyan: clc.xterm(51).bold,
19
+ cyanDim: clc.xterm(38),
20
+ teal: clc.xterm(6).bold,
21
+ green: clc.xterm(46).bold,
22
+ greenDim: clc.xterm(34),
23
+ red: clc.xterm(196).bold,
24
+ orange: clc.xterm(214).bold,
25
+ yellow: clc.xterm(226).bold,
26
+ white: clc.xterm(255).bold,
27
+ dim: clc.xterm(240),
28
+ bgTeal: clc.bgXterm(6),
29
+ bgRed: clc.bgXterm(196),
30
+ bgGreen: clc.bgXterm(28),
31
+ bgOrange: clc.bgXterm(208),
32
+ };
33
+ const FRONTENDBASE = "https://errorhub.vercel.app";
34
+ // ─── Layout Helpers ───────────────────────────────────────────────────────────
35
+ const W = 62;
36
+ const line = (char = '─') => c.teal('─'.repeat(W));
37
+ const dLine = () => c.teal('═'.repeat(W));
38
+ const blank = () => console.log(c.teal('│') + ' '.repeat(W - 2) + c.teal('│'));
39
+ const boxRow = (text, color = c.white) => {
40
+ const inner = W - 4;
41
+ const stripped = text.replace(/\x1B\[[0-9;]*m/g, '');
42
+ const pad = Math.max(0, inner - stripped.length);
43
+ const left = Math.floor(pad / 2);
44
+ const right = pad - left;
45
+ console.log(c.teal('│') + ' ' + ' '.repeat(left) + color(text) + ' '.repeat(right) + ' ' + c.teal('│'));
46
+ };
47
+ const labelRow = (label, value) => {
48
+ const l = c.cyanDim(label.padEnd(14));
49
+ const v = c.white(value);
50
+ const raw = label.padEnd(14) + value;
51
+ const pad = Math.max(0, W - 4 - raw.length);
52
+ console.log(c.teal('│') + ' ' + l + v + ' '.repeat(pad) + ' ' + c.teal('│'));
53
+ };
54
+ // ─── ASCII Logo ───────────────────────────────────────────────────────────────
55
+ const LOGO = [
56
+ '███████╗██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗██████╗ ',
57
+ '██╔════╝██╔══██╗██╔══██╗██╔═══██╗██╔══██╗██║ ██║██║ ██║██╔══██╗',
58
+ '█████╗ ██████╔╝██████╔╝██║ ██║██████╔╝███████║██║ ██║██████╔╝',
59
+ '██╔══╝ ██╔══██╗██╔══██╗██║ ██║██╔══██╗██╔══██║██║ ██║██╔══██╗',
60
+ '███████╗██║ ██║██║ ██║╚██████╔╝██║ ██║██║ ██║╚██████╔╝██████╔╝',
61
+ '╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝',
62
+ '',
63
+ ' ██████╗██╗ ██╗ ',
64
+ ' ██╔════╝██║ ██║ ',
65
+ ' ██║ ██║ ██║ ',
66
+ ' ██║ ██║ ██║ ',
67
+ ' ╚██████╗███████╗██║ ',
68
+ ' ╚═════╝╚══════╝╚═╝ ',
69
+ ];
70
+ const printLogo = () => {
71
+ console.log('');
72
+ LOGO.forEach((row, i) => {
73
+ const color = i < 3 ? c.cyan : i < 6 ? c.teal : c.green;
74
+ console.log(color(row));
75
+ });
76
+ console.log('');
77
+ };
78
+ // ─── Banner ───────────────────────────────────────────────────────────────────
79
+ const printBanner = (title, subtitle) => {
80
+ console.log('');
81
+ console.log(c.teal('╔' + '═'.repeat(W - 2) + '╗'));
82
+ boxRow('');
83
+ boxRow(title, c.cyan);
84
+ if (subtitle)
85
+ boxRow(subtitle, c.dim);
86
+ boxRow('');
87
+ console.log(c.teal('╠' + '═'.repeat(W - 2) + '╣'));
88
+ };
89
+ const closeBanner = () => {
90
+ console.log(c.teal('╚' + '═'.repeat(W - 2) + '╝'));
91
+ console.log('');
92
+ };
93
+ // ─── Status Badges ────────────────────────────────────────────────────────────
94
+ const badge = {
95
+ ok: (msg) => console.log(c.bgGreen(' ✔ OK ') + ' ' + c.green(msg)),
96
+ error: (msg) => console.log(c.bgRed(' ✘ ERR ') + ' ' + c.red(msg)),
97
+ info: (msg) => console.log(c.bgTeal(' ℹ INFO') + ' ' + c.cyanDim(msg)),
98
+ warn: (msg) => console.log(c.bgOrange(' ⚠ WARN') + ' ' + c.orange(msg)),
99
+ loading: (msg) => console.log(c.cyan(' ⟳ ') + c.cyanDim(msg)),
100
+ };
101
+ // ─── Spinner ──────────────────────────────────────────────────────────────────
102
+ const spinner = (label) => {
103
+ const frames = ['⠋', '⠙', '⠸', '⠴', '⠦', '⠇'];
104
+ let i = 0;
105
+ const iv = setInterval(() => {
106
+ process.stdout.write('\r' + c.cyan(frames[i++ % frames.length]) + ' ' + c.cyanDim(label));
107
+ }, 80);
108
+ return () => {
109
+ clearInterval(iv);
110
+ process.stdout.write('\r' + ' '.repeat(label.length + 4) + '\r');
111
+ };
112
+ };
113
+ // ─── Section Divider ──────────────────────────────────────────────────────────
114
+ const section = (title) => {
115
+ console.log('');
116
+ const l = '─'.repeat(4);
117
+ console.log(c.teal(l) + ' ' + c.yellow(title.toUpperCase()) + ' ' + c.teal(l));
118
+ };
119
+ // ─── Free Port Helper ─────────────────────────────────────────────────────────
120
+ function getFreePort(startPort = 4000) {
121
+ return new Promise((resolve) => {
122
+ const server = net.createServer();
123
+ server.listen(startPort, () => {
124
+ const port = server.address().port;
125
+ server.close(() => resolve(port));
126
+ });
127
+ server.on('error', () => {
128
+ resolve(getFreePort(startPort + 1));
129
+ });
130
+ });
131
+ }
132
+ // ─────────────────────────────────────────────────────────────────────────────
133
+ // CLI Setup
134
+ // ─────────────────────────────────────────────────────────────────────────────
135
+ program
136
+ .name('errorhub-cli')
137
+ .description('CLI with JWT login')
138
+ .version('1.0.1');
139
+ // ─────────────────────────────────────────────────────────────────────────────
140
+ // INIT
141
+ // ─────────────────────────────────────────────────────────────────────────────
142
+ program
143
+ .command('init')
144
+ .description('Initialize project')
145
+ .action(async () => {
146
+ printLogo();
147
+ printBanner('PROJECT INITIALIZER', 'Setting up your workspace...');
148
+ console.log(c.teal('│'));
149
+ labelRow('Version:', '1.0.0');
150
+ labelRow('Node:', process.version);
151
+ labelRow('Platform:', process.platform);
152
+ labelRow('CWD:', process.cwd().slice(0, 40));
153
+ console.log(c.teal('│'));
154
+ closeBanner();
155
+ section('Launching Auth Server');
156
+ console.log('');
157
+ const app = express();
158
+ const port = await getFreePort();
159
+ const stop = spinner(`Starting local server on port ${port}...`);
160
+ const server = app.listen(port, () => {
161
+ stop();
162
+ badge.ok(`Server listening on ${c.cyan(`http://localhost:${port}`)}`);
163
+ const loginUrl = `${FRONTENDBASE}/login?callback=http://localhost:${port}/callback`;
164
+ badge.info(`Opening: ${c.cyanDim(loginUrl)}`);
165
+ console.log('');
166
+ open(loginUrl);
167
+ });
168
+ section('Ready');
169
+ console.log('');
170
+ console.log(c.dim(' Waiting for browser login flow to complete...'));
171
+ console.log('');
172
+ });
173
+ // ─────────────────────────────────────────────────────────────────────────────
174
+ // LOGIN
175
+ // ─────────────────────────────────────────────────────────────────────────────
176
+ program
177
+ .command('login')
178
+ .description('Login and store JWT')
179
+ .action(async () => {
180
+ printLogo();
181
+ printBanner('AUTHENTICATION', 'Secure JWT login flow');
182
+ labelRow('Auth Server:', FRONTENDBASE);
183
+ labelRow('Config Path:', CONFIG_PATH.replace(os.homedir(), '~'));
184
+ console.log(c.teal('│'));
185
+ closeBanner();
186
+ section('Starting OAuth Flow');
187
+ console.log('');
188
+ const app = express();
189
+ const port = await getFreePort();
190
+ const stop = spinner(`Binding to port ${port}...`);
191
+ const server = app.listen(port, () => {
192
+ stop();
193
+ const loginUrl = `${FRONTENDBASE}/login?callback=http://localhost:${port}/callback`;
194
+ badge.ok(`Local callback server ready on port ${c.cyan(String(port))}`);
195
+ badge.loading('Opening browser for login...');
196
+ console.log('');
197
+ open(loginUrl);
198
+ });
199
+ app.get('/callback', (req, res) => {
200
+ const token = req.query.token;
201
+ if (!token) {
202
+ res.status(400).send(renderHtmlPage('Error', '✘ No token received.', '#ff2d2d'));
203
+ badge.error('Callback hit but no token was received.');
204
+ return;
205
+ }
206
+ fs.writeFileSync(CONFIG_PATH, JSON.stringify({ token }, null, 2));
207
+ res.send(renderHtmlPage('Success!', '✔ Login successful — you may close this tab.', '#00e5a0'));
208
+ section('Login Complete');
209
+ console.log('');
210
+ badge.ok('JWT received and stored successfully!');
211
+ console.log('');
212
+ console.log(c.teal('┌' + '─'.repeat(W - 2) + '┐'));
213
+ const preview = token.length > 50
214
+ ? token.slice(0, 24) + c.dim(' ··· ') + token.slice(-24)
215
+ : token;
216
+ boxRow('TOKEN PREVIEW', c.yellow);
217
+ boxRow(preview, c.cyanDim);
218
+ console.log(c.teal('└' + '─'.repeat(W - 2) + '┘'));
219
+ console.log('');
220
+ console.log(c.dim(` Saved to: ${CONFIG_PATH}`));
221
+ console.log('');
222
+ server.close();
223
+ });
224
+ });
225
+ // ─────────────────────────────────────────────────────────────────────────────
226
+ // WHOAMI
227
+ // ─────────────────────────────────────────────────────────────────────────────
228
+ program
229
+ .command('whoami')
230
+ .description('Read stored JWT')
231
+ .action(() => {
232
+ printLogo();
233
+ printBanner('IDENTITY CHECK', 'Reading stored credentials');
234
+ labelRow('Config:', CONFIG_PATH.replace(os.homedir(), '~'));
235
+ console.log(c.teal('│'));
236
+ closeBanner();
237
+ if (!fs.existsSync(CONFIG_PATH)) {
238
+ console.log('');
239
+ badge.error('No credentials found. Run ' + c.cyan('errorhub login') + ' first.');
240
+ console.log('');
241
+ console.log(c.teal('┌' + '─'.repeat(W - 2) + '┐'));
242
+ boxRow('NOT AUTHENTICATED', c.red);
243
+ boxRow('Use: errorhub login', c.dim);
244
+ console.log(c.teal('└' + '─'.repeat(W - 2) + '┘'));
245
+ console.log('');
246
+ return;
247
+ }
248
+ const data = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf-8'));
249
+ const { token } = data;
250
+ let jwtInfo = {};
251
+ try {
252
+ const [h, p] = token.split('.');
253
+ jwtInfo.header = JSON.parse(Buffer.from(h, 'base64').toString());
254
+ jwtInfo.payload = JSON.parse(Buffer.from(p, 'base64').toString());
255
+ }
256
+ catch {
257
+ // not a valid JWT
258
+ }
259
+ section('Stored Token');
260
+ console.log('');
261
+ console.log(c.teal('┌' + '─'.repeat(W - 2) + '┐'));
262
+ if (jwtInfo.payload) {
263
+ const p = jwtInfo.payload;
264
+ boxRow('JWT DECODED', c.yellow);
265
+ console.log(c.teal('├' + '─'.repeat(W - 2) + '┤'));
266
+ const fields = Object.entries({
267
+ sub: p.sub ?? '—',
268
+ name: p.name ?? '—',
269
+ email: p.email ?? '—',
270
+ role: p.role ?? '—',
271
+ iat: p.iat ? new Date(p.iat * 1000).toISOString() : '—',
272
+ exp: p.exp ? new Date(p.exp * 1000).toISOString() : '—',
273
+ alg: jwtInfo.header?.alg ?? '—',
274
+ });
275
+ for (const [k, v] of fields) {
276
+ labelRow(`${k}:`, String(v));
277
+ }
278
+ if (jwtInfo.payload.exp) {
279
+ const expired = Date.now() / 1000 > jwtInfo.payload.exp;
280
+ console.log(c.teal('├' + '─'.repeat(W - 2) + '┤'));
281
+ boxRow(expired ? '⚠ TOKEN EXPIRED' : '✔ TOKEN VALID', expired ? c.red : c.green);
282
+ }
283
+ }
284
+ console.log(c.teal('├' + '─'.repeat(W - 2) + '┤'));
285
+ boxRow('RAW TOKEN', c.yellow);
286
+ const chunks = token.match(/.{1,54}/g) ?? [token];
287
+ for (const chunk of chunks) {
288
+ boxRow(chunk, c.cyanDim);
289
+ }
290
+ console.log(c.teal('└' + '─'.repeat(W - 2) + '┘'));
291
+ console.log('');
292
+ });
293
+ // ─────────────────────────────────────────────────────────────────────────────
294
+ // PROJECT
295
+ // ─────────────────────────────────────────────────────────────────────────────
296
+ program
297
+ .command('project <apiKey>')
298
+ .description('Find and store project by API key')
299
+ .action(async (apiKey) => {
300
+ if (!fs.existsSync(CONFIG_PATH)) {
301
+ badge.error('Not logged in. Run errorhub login first.');
302
+ return;
303
+ }
304
+ const data = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf-8'));
305
+ const token = data.token;
306
+ const stop = spinner('Fetching projects...');
307
+ try {
308
+ const response = await fetch(`${FRONTENDBASE}/api/projects`, {
309
+ headers: { Authorization: `Bearer ${token}` }
310
+ });
311
+ const projects = await response.json();
312
+ stop();
313
+ const match = projects.find((p) => p.api_key === apiKey);
314
+ if (!match) {
315
+ badge.error('No project found with that API key.');
316
+ return;
317
+ }
318
+ fs.writeFileSync(PROJECTS, JSON.stringify({ projectId: match.id }, null, 2));
319
+ badge.ok(`Project found and saved: ${c.cyan(match.id)}`);
320
+ }
321
+ catch (e) {
322
+ stop();
323
+ badge.error('Failed to fetch projects. Check your connection.');
324
+ }
325
+ });
326
+ // ─────────────────────────────────────────────────────────────────────────────
327
+ // HTML Helper
328
+ // ─────────────────────────────────────────────────────────────────────────────
329
+ function renderHtmlPage(title, message, color) {
330
+ return `<!DOCTYPE html>
331
+ <html>
332
+ <head>
333
+ <meta charset="UTF-8"/>
334
+ <title>${title}</title>
335
+ <style>
336
+ * { margin:0; padding:0; box-sizing:border-box; }
337
+ body {
338
+ background: #0a0e14;
339
+ color: #e0e0e0;
340
+ font-family: 'Courier New', monospace;
341
+ display: flex;
342
+ align-items: center;
343
+ justify-content: center;
344
+ height: 100vh;
345
+ }
346
+ .card {
347
+ border: 1px solid ${color};
348
+ padding: 3rem 4rem;
349
+ text-align: center;
350
+ box-shadow: 0 0 40px ${color}44;
351
+ }
352
+ h1 { font-size: 2.5rem; color: ${color}; letter-spacing: 0.2em; }
353
+ p { margin-top: 1rem; color: #888; font-size: 0.9rem; }
354
+ </style>
355
+ </head>
356
+ <body>
357
+ <div class="card">
358
+ <h1>${title}</h1>
359
+ <p>${message}</p>
360
+ </div>
361
+ </body>
362
+ </html>`;
363
+ }
364
+ program.parse();
365
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "errorhub-cli",
3
- "version": "1.1.6",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "errorhub": "./dist/bundle.js"
8
+ "errorhub": "./dist/index.js"
9
9
  },
10
10
  "scripts": {
11
- "build": "tsc && esbuild dist/index.js --bundle --platform=node --outfile=dist/bundle.js && javascript-obfuscator dist/bundle.js --output dist/bundle.js --compact true --string-array true --self-defending true --string-array-encoding base64",
11
+ "build": "tsc",
12
12
  "prepublishOnly": "npm run build"
13
13
  },
14
14
  "keywords": [],
@@ -19,7 +19,6 @@
19
19
  "@types/commander": "^2.12.0",
20
20
  "@types/express": "^5.0.6",
21
21
  "@types/node": "^25.2.3",
22
- "javascript-obfuscator": "^5.3.0",
23
22
  "ts-node": "^10.9.2",
24
23
  "typescript": "^5.9.3"
25
24
  },