@b0xs/recorder 1.0.2 → 1.0.6
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/record.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/record.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuMzE"}
|
|
@@ -64,15 +64,15 @@ async function recordCommand(options) {
|
|
|
64
64
|
const apiUrl = configStore.getApiUrl();
|
|
65
65
|
// Create API client
|
|
66
66
|
const apiClient = new client_1.APIClient({ apiKey, baseUrl: apiUrl });
|
|
67
|
-
const spinner = (0, ora_1.default)('').start();
|
|
68
67
|
let session;
|
|
69
68
|
if (options.sessionId) {
|
|
70
69
|
// Attach to existing session created from web UI
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
console.log(chalk_1.default.green(`✔ Attaching to session ${options.sessionId}`));
|
|
71
|
+
const spinner = (0, ora_1.default)('Fetching session...').start();
|
|
73
72
|
try {
|
|
74
73
|
const res = await apiClient.getSession(options.sessionId);
|
|
75
74
|
session = { id: res.id, userId: res.userId };
|
|
75
|
+
spinner.succeed(chalk_1.default.green('Session attached'));
|
|
76
76
|
}
|
|
77
77
|
catch (error) {
|
|
78
78
|
spinner.fail(chalk_1.default.red('Session not found'));
|
|
@@ -81,11 +81,11 @@ async function recordCommand(options) {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
|
-
//
|
|
84
|
+
// Prompt first, then spin
|
|
85
85
|
const title = options.title || await promptWithDefault('Session title', `Recording ${new Date().toLocaleString()}`);
|
|
86
86
|
const description = options.description || await promptOptional('Description (optional)');
|
|
87
87
|
const visibility = options.visibility || configStore.getDefaultVisibility();
|
|
88
|
-
spinner
|
|
88
|
+
const spinner = (0, ora_1.default)('Creating session...').start();
|
|
89
89
|
try {
|
|
90
90
|
session = await apiClient.createSession({ title, description, visibility });
|
|
91
91
|
spinner.succeed(chalk_1.default.green('Session created'));
|
|
@@ -112,10 +112,10 @@ async function recordCommand(options) {
|
|
|
112
112
|
wsUrl: process.env.WS_SERVER_URL || 'wss://ws.boxs.sh',
|
|
113
113
|
streamToken: options.streamToken,
|
|
114
114
|
};
|
|
115
|
-
|
|
115
|
+
console.log(chalk_1.default.green('✔ Stream token attached'));
|
|
116
116
|
}
|
|
117
117
|
else {
|
|
118
|
-
|
|
118
|
+
const streamSpinner = (0, ora_1.default)('Starting stream...').start();
|
|
119
119
|
try {
|
|
120
120
|
const streamInfo = await apiClient.startStream(session.id);
|
|
121
121
|
streamingConfig = {
|
|
@@ -123,10 +123,10 @@ async function recordCommand(options) {
|
|
|
123
123
|
wsUrl: streamInfo.wsUrl,
|
|
124
124
|
streamToken: streamInfo.streamToken,
|
|
125
125
|
};
|
|
126
|
-
|
|
126
|
+
streamSpinner.succeed(chalk_1.default.green('Stream initialized'));
|
|
127
127
|
}
|
|
128
128
|
catch (error) {
|
|
129
|
-
|
|
129
|
+
streamSpinner.fail(chalk_1.default.yellow('Failed to start stream (continuing without live streaming)'));
|
|
130
130
|
console.log(chalk_1.default.gray(` ${error.message}\n`));
|
|
131
131
|
}
|
|
132
132
|
}
|
|
@@ -140,35 +140,75 @@ async function recordCommand(options) {
|
|
|
140
140
|
chunkDuration: configStore.getChunkDuration(),
|
|
141
141
|
streaming: streamingConfig,
|
|
142
142
|
});
|
|
143
|
+
// Status line state
|
|
144
|
+
let viewers = 0;
|
|
145
|
+
let chunksUploaded = 0;
|
|
146
|
+
let startTime = 0;
|
|
147
|
+
let statusInterval = null;
|
|
148
|
+
const isStreaming = !!(options.stream || options.streamToken);
|
|
149
|
+
let wsState = 'connecting';
|
|
150
|
+
function renderStatus() {
|
|
151
|
+
if (startTime === 0)
|
|
152
|
+
return;
|
|
153
|
+
const elapsed = formatDuration(Date.now() - startTime);
|
|
154
|
+
const parts = [];
|
|
155
|
+
parts.push(chalk_1.default.red('●') + chalk_1.default.bold(' REC'));
|
|
156
|
+
if (isStreaming) {
|
|
157
|
+
const wsIndicator = wsState === 'connected'
|
|
158
|
+
? chalk_1.default.hex('#ccfc14')('◉ LIVE')
|
|
159
|
+
: wsState === 'connecting'
|
|
160
|
+
? chalk_1.default.yellow('◌ CONNECTING')
|
|
161
|
+
: chalk_1.default.red('✗ OFFLINE');
|
|
162
|
+
parts.push(wsIndicator);
|
|
163
|
+
parts.push(viewers > 0
|
|
164
|
+
? chalk_1.default.cyan(`👁 ${viewers} viewer${viewers !== 1 ? 's' : ''}`)
|
|
165
|
+
: chalk_1.default.gray('👁 0 viewers'));
|
|
166
|
+
}
|
|
167
|
+
parts.push(chalk_1.default.gray(`⬡ ${chunksUploaded} chunk${chunksUploaded !== 1 ? 's' : ''}`));
|
|
168
|
+
parts.push(chalk_1.default.gray(`⏱ ${elapsed}`));
|
|
169
|
+
process.stderr.write('\r' + parts.join(chalk_1.default.gray(' | ')) + ' ');
|
|
170
|
+
}
|
|
143
171
|
// Setup event handlers
|
|
144
172
|
recorder.on('started', () => {
|
|
173
|
+
startTime = Date.now();
|
|
145
174
|
console.log(chalk_1.default.green('\n● Recording started\n'));
|
|
146
|
-
if (
|
|
175
|
+
if (isStreaming) {
|
|
147
176
|
console.log(chalk_1.default.cyan('● Live streaming enabled\n'));
|
|
148
177
|
}
|
|
149
178
|
console.log(chalk_1.default.gray('Press Ctrl+C to stop recording'));
|
|
150
179
|
console.log(chalk_1.default.gray('Type ') + chalk_1.default.white('exit') + chalk_1.default.gray(' to end the session\n'));
|
|
180
|
+
statusInterval = setInterval(renderStatus, 1000);
|
|
151
181
|
});
|
|
152
182
|
recorder.on('stream-connected', () => {
|
|
183
|
+
wsState = 'connected';
|
|
153
184
|
console.log(chalk_1.default.cyan('● Connected to stream server\n'));
|
|
154
185
|
});
|
|
186
|
+
recorder.on('stream-disconnected', () => {
|
|
187
|
+
wsState = 'disconnected';
|
|
188
|
+
});
|
|
189
|
+
recorder.on('stream-error', () => {
|
|
190
|
+
wsState = 'disconnected';
|
|
191
|
+
});
|
|
155
192
|
recorder.on('viewers', (count) => {
|
|
156
|
-
|
|
157
|
-
process.stderr.write(chalk_1.default.gray(`\r👁 ${count} viewer${count !== 1 ? 's' : ''} watching`));
|
|
158
|
-
}
|
|
193
|
+
viewers = count;
|
|
159
194
|
});
|
|
160
|
-
recorder.on('chunk-uploaded', (
|
|
161
|
-
|
|
162
|
-
process.stderr.write(chalk_1.default.gray('.'));
|
|
195
|
+
recorder.on('chunk-uploaded', () => {
|
|
196
|
+
chunksUploaded++;
|
|
163
197
|
});
|
|
164
|
-
recorder.on('command', (
|
|
198
|
+
recorder.on('command', (_command) => {
|
|
165
199
|
// Commands are automatically detected and recorded
|
|
166
200
|
});
|
|
167
201
|
recorder.on('error', (error) => {
|
|
168
|
-
|
|
202
|
+
process.stderr.write('\n');
|
|
203
|
+
console.error(chalk_1.default.yellow(`⚠ Warning: ${error.message}`));
|
|
169
204
|
});
|
|
170
205
|
recorder.on('stopped', async (stats) => {
|
|
171
|
-
|
|
206
|
+
if (statusInterval) {
|
|
207
|
+
clearInterval(statusInterval);
|
|
208
|
+
statusInterval = null;
|
|
209
|
+
}
|
|
210
|
+
process.stderr.write('\n');
|
|
211
|
+
console.log(chalk_1.default.green('\n✓ Recording saved successfully'));
|
|
172
212
|
console.log(chalk_1.default.gray(`\nDuration: ${formatDuration(stats.duration)}`));
|
|
173
213
|
console.log(chalk_1.default.gray(`Chunks: ${stats.chunksUploaded}`));
|
|
174
214
|
console.log(chalk_1.default.gray(`Frames: ${stats.framesRecorded}`));
|
|
@@ -186,6 +226,8 @@ async function recordCommand(options) {
|
|
|
186
226
|
await new Promise((resolve) => {
|
|
187
227
|
recorder.on('stopped', resolve);
|
|
188
228
|
});
|
|
229
|
+
// Force-exit: socket.io + PTY stdin listeners keep the event loop alive
|
|
230
|
+
process.exit(0);
|
|
189
231
|
}
|
|
190
232
|
catch (error) {
|
|
191
233
|
console.log(chalk_1.default.red(`\n✗ Error: ${error.message}\n`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/cli/commands/record.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/cli/commands/record.ts"],"names":[],"mappings":"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"}
|