devportal-tunnel 1.0.0 → 1.0.2

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.
@@ -40,108 +40,261 @@ exports.startTunnel = startTunnel;
40
40
  const chalk_1 = __importDefault(require("chalk"));
41
41
  const ora_1 = __importDefault(require("ora"));
42
42
  const http = __importStar(require("http"));
43
+ const tunnelClient_1 = require("../utils/tunnelClient");
43
44
  const tunnels_1 = require("../utils/tunnels");
44
45
  const device_1 = require("../utils/device");
45
- // @ts-ignore - qrcode-terminal doesn't have types
46
- const qrcode = __importStar(require("qrcode-terminal"));
46
+ const config_1 = require("../utils/config");
47
47
  async function startTunnel(port, options) {
48
- const spinner = (0, ora_1.default)('Establishing tunnel...').start();
48
+ const spinner = (0, ora_1.default)("Connecting to DevPortal...").start();
49
+ // Parse port forwarding if provided
50
+ let localPort = port;
51
+ let remotePort = port;
52
+ if (options.forward) {
53
+ const [remote, local] = options.forward.split(":");
54
+ if (!remote || !local) {
55
+ spinner.fail(chalk_1.default.red("Invalid port forwarding format. Use: --forward <remote>:<local>"));
56
+ console.log(chalk_1.default.gray("Example: --forward 8080:3000 (forwards remote port 8080 to local port 3000)"));
57
+ process.exit(1);
58
+ }
59
+ remotePort = parseInt(remote);
60
+ localPort = parseInt(local);
61
+ if (isNaN(remotePort) || isNaN(localPort)) {
62
+ spinner.fail(chalk_1.default.red("Invalid port numbers in forwarding"));
63
+ process.exit(1);
64
+ }
65
+ spinner.text = `Setting up port forwarding ${remotePort}:${localPort}...`;
66
+ }
67
+ // Check for existing tunnels on the same local port
68
+ const existingTunnels = (0, tunnels_1.getTunnels)().filter((t) => t.status === "live" && t.localPort === localPort);
69
+ if (existingTunnels.length > 0) {
70
+ spinner.fail(chalk_1.default.red(`Port ${localPort} is already being tunneled`));
71
+ console.log();
72
+ console.log(chalk_1.default.yellow("Existing tunnel:"));
73
+ existingTunnels.forEach((tunnel) => {
74
+ console.log(chalk_1.default.gray(` ID: ${tunnel.id}`));
75
+ console.log(chalk_1.default.gray(` Name: ${tunnel.name}`));
76
+ console.log(chalk_1.default.gray(` URL: ${tunnel.url}`));
77
+ console.log(chalk_1.default.gray(` Local Port: ${tunnel.localPort}`));
78
+ });
79
+ console.log();
80
+ console.log(chalk_1.default.gray("Options:"));
81
+ console.log(chalk_1.default.gray(" 1. Stop the existing tunnel: ") +
82
+ chalk_1.default.cyan(`devportal-tunnel stop ${existingTunnels[0].id}`));
83
+ console.log(chalk_1.default.gray(" 2. Use a different local port"));
84
+ console.log(chalk_1.default.gray(" 3. Use port forwarding: ") +
85
+ chalk_1.default.cyan(`--forward ${remotePort}:<different-port>`));
86
+ process.exit(1);
87
+ }
49
88
  // Check if local server is running
50
- const isPortOpen = await checkPort(port);
89
+ const isPortOpen = await checkPort(localPort);
51
90
  if (!isPortOpen) {
52
- spinner.warn(chalk_1.default.yellow(`No server detected on port ${port}`));
53
- console.log(chalk_1.default.gray(` Make sure your local server is running first`));
54
- console.log(chalk_1.default.gray(` Example: npm run dev`));
91
+ spinner.fail(chalk_1.default.red(`No server running on port ${localPort}`));
92
+ console.log();
93
+ console.log(chalk_1.default.gray(" Make sure your local server is running first:"));
94
+ console.log(chalk_1.default.gray(" Example: npm run dev"));
95
+ console.log();
96
+ console.log(chalk_1.default.gray(" Then run:"));
97
+ if (options.forward) {
98
+ console.log(chalk_1.default.cyan(` devportal-tunnel start ${port} --forward ${options.forward}`));
99
+ }
100
+ else {
101
+ console.log(chalk_1.default.cyan(` devportal-tunnel start ${port}`));
102
+ }
55
103
  console.log();
104
+ process.exit(1);
56
105
  }
57
- // Generate tunnel info
58
- const name = options.subdomain || (0, tunnels_1.generateTunnelName)();
59
- const tunnelId = `t-${Date.now().toString(36)}`;
60
- const url = `https://${name}.devportal.live`;
61
- // Simulate connection delay
62
- await sleep(1500);
63
- const tunnel = {
64
- id: tunnelId,
65
- name,
66
- url,
67
- localPort: port,
68
- status: 'live',
69
- createdAt: new Date().toISOString(),
70
- pid: process.pid,
71
- };
72
- (0, tunnels_1.addTunnel)(tunnel);
73
- spinner.succeed(chalk_1.default.green('Tunnel established'));
74
- console.log();
75
- // Display tunnel info
76
- console.log(chalk_1.default.gray(' Local server: '), chalk_1.default.white(`http://localhost:${port}`));
77
- console.log(chalk_1.default.gray(' Public URL: '), chalk_1.default.cyan.underline(url));
78
- console.log(chalk_1.default.gray(' Tunnel ID: '), chalk_1.default.white(tunnelId));
79
- if (options.password) {
80
- console.log(chalk_1.default.gray(' Password: '), chalk_1.default.yellow('Protected'));
106
+ const config = (0, config_1.getConfig)();
107
+ const deviceId = (0, device_1.getDeviceId)();
108
+ // Use local simulation if no server configured or --local flag
109
+ if (options.local || !config.serverUrl) {
110
+ spinner.text = "Starting local simulation mode...";
111
+ await startSimulatedTunnel(localPort, remotePort, options, spinner);
112
+ return;
81
113
  }
82
- if (options.demo) {
83
- console.log(chalk_1.default.gray(' Expires: '), chalk_1.default.yellow('2 hours'));
114
+ // Connect to real server
115
+ try {
116
+ const client = new tunnelClient_1.TunnelClient({
117
+ serverUrl: config.serverUrl,
118
+ wsUrl: config.wsUrl,
119
+ deviceId,
120
+ localPort,
121
+ remotePort: options.forward ? remotePort : undefined,
122
+ subdomain: options.subdomain,
123
+ password: options.password,
124
+ demo: options.demo,
125
+ authHeader: options.authHeader,
126
+ });
127
+ // Handle events
128
+ client.on("request", ({ method, path }) => {
129
+ const methodColor = getMethodColor(method);
130
+ const timestamp = new Date().toLocaleTimeString();
131
+ process.stdout.write(chalk_1.default.gray(timestamp) + " ");
132
+ process.stdout.write(methodColor(method.padEnd(7)));
133
+ process.stdout.write(chalk_1.default.white(path) + " ");
134
+ });
135
+ client.on("response", ({ status }) => {
136
+ const statusColor = status < 300 ? chalk_1.default.green : status < 400 ? chalk_1.default.yellow : chalk_1.default.red;
137
+ console.log(statusColor(status.toString()));
138
+ });
139
+ client.on("error", (error) => {
140
+ console.error(chalk_1.default.red("Error:"), error.message);
141
+ });
142
+ client.on("disconnected", () => {
143
+ console.log(chalk_1.default.yellow("\nConnection lost. Reconnecting..."));
144
+ });
145
+ spinner.text = "Establishing tunnel...";
146
+ const tunnelInfo = await client.connect();
147
+ spinner.succeed(chalk_1.default.green("Tunnel established"));
148
+ console.log();
149
+ // Display tunnel info
150
+ console.log(chalk_1.default.gray(" Local server: "), chalk_1.default.white(`http://localhost:${localPort}`));
151
+ if (options.forward) {
152
+ console.log(chalk_1.default.gray(" Port forward: "), chalk_1.default.white(`Remote ${remotePort} → Local ${localPort}`));
153
+ }
154
+ console.log(chalk_1.default.gray(" Public URL: "), chalk_1.default.cyan.underline(tunnelInfo.url));
155
+ console.log(chalk_1.default.gray(" Tunnel ID: "), chalk_1.default.white(tunnelInfo.id));
156
+ if (options.password) {
157
+ console.log(chalk_1.default.gray(" Password: "), chalk_1.default.yellow("Protected"));
158
+ }
159
+ if (tunnelInfo.expiresAt) {
160
+ const expiresIn = Math.round((new Date(tunnelInfo.expiresAt).getTime() - Date.now()) / 60000);
161
+ console.log(chalk_1.default.gray(" Expires in: "), chalk_1.default.yellow(`${expiresIn} minutes`));
162
+ }
163
+ console.log();
164
+ console.log();
165
+ // Save tunnel info locally
166
+ const storedTunnel = {
167
+ id: tunnelInfo.id,
168
+ name: tunnelInfo.name,
169
+ url: tunnelInfo.url,
170
+ localPort,
171
+ status: "live",
172
+ createdAt: new Date().toISOString(),
173
+ pid: process.pid,
174
+ };
175
+ (0, tunnels_1.addTunnel)(storedTunnel);
176
+ console.log(chalk_1.default.gray(" Forwarding requests... (Press Ctrl+C to stop)"));
177
+ console.log();
178
+ // Handle shutdown
179
+ process.on("SIGINT", async () => {
180
+ console.log();
181
+ console.log(chalk_1.default.yellow("Stopping tunnel..."));
182
+ await client.stop();
183
+ console.log(chalk_1.default.green("Tunnel stopped"));
184
+ process.exit(0);
185
+ });
186
+ // Keep process alive
187
+ await new Promise(() => { });
84
188
  }
85
- console.log();
86
- console.log(chalk_1.default.gray(' Dashboard: '), chalk_1.default.underline(`https://devportal.live/dashboard/${(0, device_1.getDeviceId)()}`));
87
- console.log();
88
- // Show QR code if requested
89
- if (options.qr) {
90
- console.log(chalk_1.default.gray(' Scan to open on mobile:'));
189
+ catch (error) {
190
+ spinner.fail(chalk_1.default.red("Failed to connect"));
91
191
  console.log();
92
- qrcode.generate(url, { small: true });
192
+ console.log(chalk_1.default.red("Error:"), error.message);
93
193
  console.log();
194
+ console.log(chalk_1.default.gray("Troubleshooting:"));
195
+ console.log(chalk_1.default.gray(" 1. Check your internet connection"));
196
+ console.log(chalk_1.default.gray(" 2. Verify the server URL in ~/.devportal/config.json"));
197
+ console.log(chalk_1.default.gray(" 3. Try running with --local for simulation mode"));
198
+ process.exit(1);
199
+ }
200
+ }
201
+ async function startSimulatedTunnel(localPort, remotePort, options, spinner) {
202
+ // Simulate connection delay
203
+ await sleep(1000);
204
+ const name = options.subdomain || generateTunnelName();
205
+ const tunnelId = `t-${Date.now().toString(36)}`;
206
+ const url = `https://${name}.devportal.local`;
207
+ spinner.succeed(chalk_1.default.green("Tunnel established (simulation mode)"));
208
+ console.log();
209
+ console.log(chalk_1.default.gray(" Local server: "), chalk_1.default.white(`http://localhost:${localPort}`));
210
+ if (options.forward) {
211
+ console.log(chalk_1.default.gray(" Port forward: "), chalk_1.default.white(`Remote ${remotePort} → Local ${localPort}`));
94
212
  }
95
- // Start mock request logging
96
- console.log(chalk_1.default.gray(' Waiting for requests... (Press Ctrl+C to stop)'));
213
+ console.log(chalk_1.default.gray(" Public URL: "), chalk_1.default.cyan.underline(url));
214
+ console.log(chalk_1.default.gray(" Tunnel ID: "), chalk_1.default.white(tunnelId));
215
+ console.log();
216
+ console.log(chalk_1.default.yellow(" ⚠ Running in simulation mode"));
217
+ console.log(chalk_1.default.gray(" Configure server URL to enable real tunneling"));
218
+ console.log();
219
+ console.log(chalk_1.default.gray(" Simulating requests... (Press Ctrl+C to stop)"));
97
220
  console.log();
98
- // Simulate incoming requests
99
- simulateRequests();
100
- // Handle shutdown
101
- process.on('SIGINT', () => {
221
+ simulateRequests(localPort);
222
+ process.on("SIGINT", () => {
102
223
  console.log();
103
- console.log(chalk_1.default.yellow('Tunnel stopped'));
224
+ console.log(chalk_1.default.yellow("Tunnel stopped"));
104
225
  process.exit(0);
105
226
  });
106
- // Keep process alive
107
227
  await new Promise(() => { });
108
228
  }
229
+ function simulateRequests(port) {
230
+ const methods = ["GET", "POST", "PUT", "DELETE"];
231
+ const paths = ["/api/users", "/api/auth", "/api/data", "/webhook", "/health"];
232
+ const statuses = [200, 200, 200, 201, 400, 401, 404];
233
+ const logRequest = () => {
234
+ const method = methods[Math.floor(Math.random() * methods.length)];
235
+ const path = paths[Math.floor(Math.random() * paths.length)];
236
+ const status = statuses[Math.floor(Math.random() * statuses.length)];
237
+ const duration = Math.floor(Math.random() * 200) + 20;
238
+ const timestamp = new Date().toLocaleTimeString();
239
+ const methodColor = getMethodColor(method);
240
+ const statusColor = status < 300 ? chalk_1.default.green : status < 400 ? chalk_1.default.yellow : chalk_1.default.red;
241
+ console.log(chalk_1.default.gray(timestamp), methodColor(method.padEnd(7)), chalk_1.default.white(path.padEnd(20)), statusColor(status.toString()), chalk_1.default.gray(`${duration}ms`));
242
+ const nextInterval = Math.floor(Math.random() * 6000) + 2000;
243
+ setTimeout(logRequest, nextInterval);
244
+ };
245
+ setTimeout(logRequest, 2000);
246
+ }
247
+ function getMethodColor(method) {
248
+ const colors = {
249
+ GET: chalk_1.default.green,
250
+ POST: chalk_1.default.blue,
251
+ PUT: chalk_1.default.yellow,
252
+ DELETE: chalk_1.default.red,
253
+ PATCH: chalk_1.default.magenta,
254
+ };
255
+ return colors[method] || chalk_1.default.white;
256
+ }
109
257
  async function checkPort(port) {
110
258
  return new Promise((resolve) => {
111
- const req = http.request({ host: 'localhost', port, timeout: 1000 }, () => {
259
+ const req = http.request({ host: "localhost", port, timeout: 1000 }, () => {
112
260
  resolve(true);
113
261
  });
114
- req.on('error', () => resolve(false));
115
- req.on('timeout', () => resolve(false));
262
+ req.on("error", () => resolve(false));
263
+ req.on("timeout", () => resolve(false));
116
264
  req.end();
117
265
  });
118
266
  }
119
267
  function sleep(ms) {
120
268
  return new Promise((resolve) => setTimeout(resolve, ms));
121
269
  }
122
- function simulateRequests() {
123
- const methods = ['GET', 'POST', 'PUT', 'DELETE'];
124
- const paths = ['/api/users', '/api/auth', '/api/data', '/webhook', '/health', '/api/items'];
125
- const statuses = [200, 200, 200, 201, 400, 401, 404, 500];
126
- const logRequest = () => {
127
- const method = methods[Math.floor(Math.random() * methods.length)];
128
- const path = paths[Math.floor(Math.random() * paths.length)];
129
- const status = statuses[Math.floor(Math.random() * statuses.length)];
130
- const duration = Math.floor(Math.random() * 200) + 20;
131
- const methodColor = {
132
- GET: chalk_1.default.green,
133
- POST: chalk_1.default.blue,
134
- PUT: chalk_1.default.yellow,
135
- DELETE: chalk_1.default.red,
136
- }[method] || chalk_1.default.white;
137
- const statusColor = status < 300 ? chalk_1.default.green : status < 400 ? chalk_1.default.yellow : chalk_1.default.red;
138
- const timestamp = new Date().toLocaleTimeString();
139
- console.log(chalk_1.default.gray(timestamp), methodColor(method.padEnd(6)), chalk_1.default.white(path.padEnd(20)), statusColor(status.toString()), chalk_1.default.gray(`${duration}ms`));
140
- // Schedule next request (random interval 2-8 seconds)
141
- const nextInterval = Math.floor(Math.random() * 6000) + 2000;
142
- setTimeout(logRequest, nextInterval);
143
- };
144
- // Start after initial delay
145
- setTimeout(logRequest, 3000);
270
+ const adjectives = [
271
+ "purple",
272
+ "cosmic",
273
+ "hidden",
274
+ "crystal",
275
+ "silent",
276
+ "golden",
277
+ "frozen",
278
+ "blazing",
279
+ "lunar",
280
+ "neon",
281
+ ];
282
+ const nouns = [
283
+ "horizon",
284
+ "lake",
285
+ "forest",
286
+ "ocean",
287
+ "canyon",
288
+ "river",
289
+ "meadow",
290
+ "summit",
291
+ "valley",
292
+ "storm",
293
+ ];
294
+ function generateTunnelName() {
295
+ const adj = adjectives[Math.floor(Math.random() * adjectives.length)];
296
+ const noun = nouns[Math.floor(Math.random() * nouns.length)];
297
+ const num = Math.floor(Math.random() * 900) + 100;
298
+ return `${adj}-${noun}-${num}`;
146
299
  }
147
300
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,29 +11,32 @@ const list_1 = require("./commands/list");
11
11
  const stop_1 = require("./commands/stop");
12
12
  const replay_1 = require("./commands/replay");
13
13
  const logs_1 = require("./commands/logs");
14
+ const config_1 = require("./commands/config");
15
+ const port_1 = require("./commands/port");
14
16
  const device_1 = require("./utils/device");
15
17
  const program = new commander_1.Command();
16
18
  // ASCII art logo
17
19
  const logo = `
18
- ${chalk_1.default.cyan('╔═══════════════════════════════════════╗')}
19
- ${chalk_1.default.cyan('║')} ${chalk_1.default.bold.white('DevPortal')} - Share localhost instantly ${chalk_1.default.cyan('║')}
20
- ${chalk_1.default.cyan('╚═══════════════════════════════════════╝')}
20
+ ${chalk_1.default.cyan("╔═══════════════════════════════════════╗")}
21
+ ${chalk_1.default.cyan("║")} ${chalk_1.default.bold.white("DevPortal")} - Share localhost instantly ${chalk_1.default.cyan("║")}
22
+ ${chalk_1.default.cyan("╚═══════════════════════════════════════╝")}
21
23
  `;
22
24
  program
23
- .name('devportal')
24
- .description('Expose your localhost to the internet with a single command')
25
- .version('1.0.0')
26
- .hook('preAction', () => {
25
+ .name("devportal")
26
+ .description("Expose your localhost to the internet with a single command")
27
+ .version("1.0.0")
28
+ .hook("preAction", () => {
27
29
  console.log(logo);
28
30
  });
29
31
  // Main command: devportal <port>
30
32
  program
31
- .argument('[port]', 'Local port to expose', '3000')
32
- .option('-s, --subdomain <name>', 'Custom subdomain for your URL')
33
- .option('-p, --password <pass>', 'Password protect the tunnel')
34
- .option('--demo', 'Create a temporary link that expires in 2 hours')
35
- .option('--qr', 'Display QR code in terminal')
36
- .option('--auth-header <header>', 'Add authorization header to requests')
33
+ .argument("[port]", "Local port to expose", "3000")
34
+ .option("-s, --subdomain <name>", "Custom subdomain for your URL")
35
+ .option("-p, --password <pass>", "Password protect the tunnel")
36
+ .option("--demo", "Create a temporary link that expires in 2 hours")
37
+ .option("--auth-header <header>", "Add authorization header to requests")
38
+ .option("--local", "Run in local simulation mode (no server required)")
39
+ .option("--forward <ports>", "Port forwarding (format: remote:local, e.g., 8080:3000)")
37
40
  .action(async (port, options) => {
38
41
  if (port && !isNaN(parseInt(port))) {
39
42
  await (0, start_1.startTunnel)(parseInt(port), options);
@@ -42,46 +45,79 @@ program
42
45
  program.help();
43
46
  }
44
47
  });
48
+ // Start command: devportal start <port> (alias for default)
49
+ program
50
+ .command("start [port]")
51
+ .description("Start a tunnel to expose your local port")
52
+ .option("-s, --subdomain <name>", "Custom subdomain for your URL")
53
+ .option("-p, --password <pass>", "Password protect the tunnel")
54
+ .option("--demo", "Create a temporary link that expires in 2 hours")
55
+ .option("--auth-header <header>", "Add authorization header to requests")
56
+ .option("--local", "Run in local simulation mode (no server required)")
57
+ .option("--forward <ports>", "Port forwarding (format: remote:local, e.g., 8080:3000)")
58
+ .action(async (port = "3000", options) => {
59
+ await (0, start_1.startTunnel)(parseInt(port), options);
60
+ });
45
61
  // List tunnels: devportal ls
46
62
  program
47
- .command('ls')
48
- .alias('list')
49
- .description('List all active tunnels')
63
+ .command("ls")
64
+ .alias("list")
65
+ .description("List all active tunnels")
50
66
  .action(async () => {
51
67
  await (0, list_1.listTunnels)();
52
68
  });
53
69
  // Stop tunnel: devportal stop <id>
54
70
  program
55
- .command('stop [tunnelId]')
56
- .description('Stop a tunnel by ID')
57
- .option('-a, --all', 'Stop all active tunnels')
71
+ .command("stop [tunnelId]")
72
+ .description("Stop a tunnel by ID")
73
+ .option("-a, --all", "Stop all active tunnels")
58
74
  .action(async (tunnelId, options) => {
59
75
  await (0, stop_1.stopTunnel)(tunnelId, options);
60
76
  });
77
+ // Stop all tunnels: devportal stop-all (convenient alias)
78
+ program
79
+ .command("stop-all")
80
+ .description("Stop all active tunnels")
81
+ .action(async () => {
82
+ await (0, stop_1.stopTunnel)(undefined, { all: true });
83
+ });
61
84
  // Replay request: devportal replay <requestId>
62
85
  program
63
- .command('replay <requestId>')
64
- .description('Replay a captured request')
65
- .option('-H, --header <header>', 'Add or override a header')
66
- .option('-b, --body <body>', 'Override request body')
86
+ .command("replay <requestId>")
87
+ .description("Replay a captured request")
88
+ .option("-H, --header <header>", "Add or override a header")
89
+ .option("-b, --body <body>", "Override request body")
67
90
  .action(async (requestId, options) => {
68
91
  await (0, replay_1.replayRequest)(requestId, options);
69
92
  });
70
93
  // Stream logs: devportal logs <tunnelId>
71
94
  program
72
- .command('logs <tunnelId>')
73
- .description('Stream live request logs from a tunnel')
95
+ .command("logs <tunnelId>")
96
+ .description("Stream live request logs from a tunnel")
74
97
  .action(async (tunnelId) => {
75
98
  await (0, logs_1.showLogs)(tunnelId);
76
99
  });
100
+ // Config command
101
+ program
102
+ .command("config [action] [value]")
103
+ .description("View or update configuration")
104
+ .action(async (action, value) => {
105
+ await (0, config_1.configCommand)(action, value);
106
+ });
107
+ // Port management command
108
+ program
109
+ .command("port [action] [port]")
110
+ .description("Manage ports (actions: check, scan, list)")
111
+ .action(async (action, port) => {
112
+ await (0, port_1.portCommand)(action, port ? parseInt(port) : undefined);
113
+ });
77
114
  // Device info command
78
115
  program
79
- .command('whoami')
80
- .description('Show current device ID')
116
+ .command("whoami")
117
+ .description("Show current device ID")
81
118
  .action(() => {
82
119
  const deviceId = (0, device_1.getDeviceId)();
83
- console.log(chalk_1.default.gray('Device ID:'), chalk_1.default.cyan(deviceId));
84
- console.log(chalk_1.default.gray('Dashboard:'), chalk_1.default.underline(`https://devportal.live/dashboard/${deviceId}`));
120
+ console.log(chalk_1.default.gray("Device ID:"), chalk_1.default.cyan(deviceId));
85
121
  });
86
- program.parse();
122
+ program.parse(process.argv);
87
123
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface Config {
2
+ serverUrl: string;
3
+ wsUrl: string;
4
+ frontendUrl: string;
5
+ }
6
+ export declare function getConfig(): Config;
7
+ export declare function saveConfig(config: Partial<Config>): void;
8
+ export declare function setServerUrl(url: string): void;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAOxD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAS9C"}
@@ -0,0 +1,77 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getConfig = getConfig;
37
+ exports.saveConfig = saveConfig;
38
+ exports.setServerUrl = setServerUrl;
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const device_1 = require("./device");
42
+ const CONFIG_FILE = path.join((0, device_1.getConfigDir)(), "config.json");
43
+ const DEFAULT_CONFIG = {
44
+ serverUrl: "https://tunnl.stylnode.in",
45
+ wsUrl: "wss://tunnl.stylnode.in/ws",
46
+ frontendUrl: "https://devportal.stylnode.in",
47
+ };
48
+ function getConfig() {
49
+ if (!fs.existsSync(CONFIG_FILE)) {
50
+ saveConfig(DEFAULT_CONFIG);
51
+ return DEFAULT_CONFIG;
52
+ }
53
+ try {
54
+ const config = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
55
+ return { ...DEFAULT_CONFIG, ...config };
56
+ }
57
+ catch {
58
+ return DEFAULT_CONFIG;
59
+ }
60
+ }
61
+ function saveConfig(config) {
62
+ const currentConfig = fs.existsSync(CONFIG_FILE)
63
+ ? JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"))
64
+ : {};
65
+ const newConfig = { ...currentConfig, ...config };
66
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(newConfig, null, 2));
67
+ }
68
+ function setServerUrl(url) {
69
+ // Derive WebSocket URL from HTTP URL (same host, /ws path)
70
+ const wsUrl = url.replace("https://", "wss://").replace("http://", "ws://");
71
+ const wsWithPath = wsUrl.replace(/\/$/, "") + "/ws";
72
+ saveConfig({
73
+ serverUrl: url.replace(/\/$/, ""),
74
+ wsUrl: wsWithPath,
75
+ });
76
+ }
77
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8BAYC;AAED,gCAOC;AAED,oCASC;AAlDD,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAwC;AAQxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,qBAAY,GAAE,EAAE,aAAa,CAAC,CAAC;AAE7D,MAAM,cAAc,GAAW;IAC7B,SAAS,EAAE,2BAA2B;IACtC,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,+BAA+B;CAC7C,CAAC;AAEF,SAAgB,SAAS;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,MAAuB;IAChD,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,2DAA2D;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IAEpD,UAAU,CAAC;QACT,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACjC,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;AACL,CAAC"}