@ecmaos/coreutils 0.3.0 → 0.3.1
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +26 -0
- package/dist/commands/cron.d.ts +4 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +439 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/man.d.ts.map +1 -1
- package/dist/commands/man.js +10 -0
- package/dist/commands/man.js.map +1 -1
- package/dist/commands/open.d.ts +4 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +74 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/play.d.ts +4 -0
- package/dist/commands/play.d.ts.map +1 -0
- package/dist/commands/play.js +231 -0
- package/dist/commands/play.js.map +1 -0
- package/dist/commands/tar.d.ts.map +1 -1
- package/dist/commands/tar.js +67 -17
- package/dist/commands/tar.js.map +1 -1
- package/dist/commands/video.d.ts +4 -0
- package/dist/commands/video.d.ts.map +1 -0
- package/dist/commands/video.js +250 -0
- package/dist/commands/video.js.map +1 -0
- package/dist/commands/view.d.ts +4 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +488 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/web.d.ts +4 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +348 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/src/commands/cron.ts +499 -0
- package/src/commands/man.ts +8 -0
- package/src/commands/open.ts +84 -0
- package/src/commands/play.ts +249 -0
- package/src/commands/tar.ts +62 -19
- package/src/commands/video.ts +267 -0
- package/src/commands/view.ts +526 -0
- package/src/commands/web.ts +377 -0
- package/src/index.ts +20 -2
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
+
import { writelnStderr, writelnStdout } from '../shared/helpers.js';
|
|
5
|
+
function detectFileType(filePath) {
|
|
6
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
7
|
+
// PDF
|
|
8
|
+
if (ext === '.pdf') {
|
|
9
|
+
return 'pdf';
|
|
10
|
+
}
|
|
11
|
+
// Images
|
|
12
|
+
const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg', '.ico', '.tiff', '.tif'];
|
|
13
|
+
if (imageExts.includes(ext)) {
|
|
14
|
+
return 'image';
|
|
15
|
+
}
|
|
16
|
+
// Audio
|
|
17
|
+
const audioExts = ['.mp3', '.wav', '.ogg', '.oga', '.opus', '.m4a', '.aac', '.flac', '.webm', '.wma', '.aiff', '.aif', '.3gp', '.amr'];
|
|
18
|
+
if (audioExts.includes(ext)) {
|
|
19
|
+
return 'audio';
|
|
20
|
+
}
|
|
21
|
+
// Video
|
|
22
|
+
const videoExts = ['.mp4', '.webm', '.ogg', '.ogv', '.mov', '.avi', '.mkv', '.m4v', '.flv', '.wmv', '.3gp'];
|
|
23
|
+
if (videoExts.includes(ext)) {
|
|
24
|
+
return 'video';
|
|
25
|
+
}
|
|
26
|
+
// Default to image for unknown types (might be an image without extension)
|
|
27
|
+
return 'image';
|
|
28
|
+
}
|
|
29
|
+
function getMimeType(filePath, fileType) {
|
|
30
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
31
|
+
if (fileType === 'pdf') {
|
|
32
|
+
return 'application/pdf';
|
|
33
|
+
}
|
|
34
|
+
if (fileType === 'image') {
|
|
35
|
+
const mimeTypes = {
|
|
36
|
+
'.jpg': 'image/jpeg',
|
|
37
|
+
'.jpeg': 'image/jpeg',
|
|
38
|
+
'.png': 'image/png',
|
|
39
|
+
'.gif': 'image/gif',
|
|
40
|
+
'.bmp': 'image/bmp',
|
|
41
|
+
'.webp': 'image/webp',
|
|
42
|
+
'.svg': 'image/svg+xml',
|
|
43
|
+
'.ico': 'image/x-icon',
|
|
44
|
+
'.tiff': 'image/tiff',
|
|
45
|
+
'.tif': 'image/tiff'
|
|
46
|
+
};
|
|
47
|
+
return mimeTypes[ext] || 'image/png';
|
|
48
|
+
}
|
|
49
|
+
if (fileType === 'audio') {
|
|
50
|
+
const mimeTypes = {
|
|
51
|
+
'.mp3': 'audio/mpeg',
|
|
52
|
+
'.wav': 'audio/wav',
|
|
53
|
+
'.ogg': 'audio/ogg',
|
|
54
|
+
'.oga': 'audio/ogg',
|
|
55
|
+
'.opus': 'audio/opus',
|
|
56
|
+
'.m4a': 'audio/mp4',
|
|
57
|
+
'.aac': 'audio/aac',
|
|
58
|
+
'.flac': 'audio/flac',
|
|
59
|
+
'.webm': 'audio/webm',
|
|
60
|
+
'.wma': 'audio/x-ms-wma',
|
|
61
|
+
'.aiff': 'audio/aiff',
|
|
62
|
+
'.aif': 'audio/aiff',
|
|
63
|
+
'.3gp': 'audio/3gpp',
|
|
64
|
+
'.amr': 'audio/amr'
|
|
65
|
+
};
|
|
66
|
+
return mimeTypes[ext] || 'audio/mpeg';
|
|
67
|
+
}
|
|
68
|
+
if (fileType === 'video') {
|
|
69
|
+
const mimeTypes = {
|
|
70
|
+
'.mp4': 'video/mp4',
|
|
71
|
+
'.webm': 'video/webm',
|
|
72
|
+
'.ogg': 'video/ogg',
|
|
73
|
+
'.ogv': 'video/ogg',
|
|
74
|
+
'.mov': 'video/quicktime',
|
|
75
|
+
'.avi': 'video/x-msvideo',
|
|
76
|
+
'.mkv': 'video/x-matroska',
|
|
77
|
+
'.m4v': 'video/mp4',
|
|
78
|
+
'.flv': 'video/x-flv',
|
|
79
|
+
'.wmv': 'video/x-ms-wmv',
|
|
80
|
+
'.3gp': 'video/3gpp'
|
|
81
|
+
};
|
|
82
|
+
return mimeTypes[ext] || 'video/mp4';
|
|
83
|
+
}
|
|
84
|
+
return 'application/octet-stream';
|
|
85
|
+
}
|
|
86
|
+
function printUsage(process, terminal) {
|
|
87
|
+
const usage = `Usage: view [OPTIONS] [FILE...]
|
|
88
|
+
View files in a new window. Supports PDF, images, audio, and video files.
|
|
89
|
+
|
|
90
|
+
--help display this help and exit
|
|
91
|
+
|
|
92
|
+
Audio/Video Options (for audio and video files):
|
|
93
|
+
--no-autoplay don't start playing automatically
|
|
94
|
+
--loop loop the media
|
|
95
|
+
--muted start muted
|
|
96
|
+
--volume <0-100> set volume (0-100, default: 100, audio only)
|
|
97
|
+
--no-controls hide video controls (video only)
|
|
98
|
+
--fullscreen open in fullscreen mode (video only)
|
|
99
|
+
--width <width> set window width (video only)
|
|
100
|
+
--height <height> set window height (video only)
|
|
101
|
+
--quiet play without opening a window (audio only, background playback)
|
|
102
|
+
|
|
103
|
+
Examples:
|
|
104
|
+
view document.pdf view a PDF file
|
|
105
|
+
view image.png view an image
|
|
106
|
+
view song.mp3 view/play an audio file
|
|
107
|
+
view movie.mp4 view/play a video file
|
|
108
|
+
view --loop music.mp3 play audio in a loop
|
|
109
|
+
view --no-autoplay video.mp4 load video without auto-playing
|
|
110
|
+
view --volume 50 track.mp3 play at 50% volume
|
|
111
|
+
view --fullscreen movie.mp4 play video in fullscreen mode`;
|
|
112
|
+
writelnStderr(process, terminal, usage);
|
|
113
|
+
}
|
|
114
|
+
async function loadAudioMetadata(audioElement) {
|
|
115
|
+
return new Promise((resolve, reject) => {
|
|
116
|
+
const timeout = setTimeout(() => {
|
|
117
|
+
reject(new Error('Timeout loading audio metadata'));
|
|
118
|
+
}, 10000);
|
|
119
|
+
audioElement.onloadedmetadata = () => {
|
|
120
|
+
clearTimeout(timeout);
|
|
121
|
+
resolve({
|
|
122
|
+
duration: audioElement.duration
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
audioElement.onerror = () => {
|
|
126
|
+
clearTimeout(timeout);
|
|
127
|
+
reject(new Error('Failed to load audio metadata'));
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async function loadVideoMetadata(videoElement) {
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
const timeout = setTimeout(() => {
|
|
134
|
+
reject(new Error('Timeout loading video metadata'));
|
|
135
|
+
}, 10000);
|
|
136
|
+
videoElement.onloadedmetadata = () => {
|
|
137
|
+
clearTimeout(timeout);
|
|
138
|
+
resolve({
|
|
139
|
+
width: videoElement.videoWidth,
|
|
140
|
+
height: videoElement.videoHeight,
|
|
141
|
+
duration: videoElement.duration
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
videoElement.onerror = () => {
|
|
145
|
+
clearTimeout(timeout);
|
|
146
|
+
reject(new Error('Failed to load video metadata'));
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
function formatDuration(seconds) {
|
|
151
|
+
if (!isFinite(seconds) || isNaN(seconds))
|
|
152
|
+
return '?:??';
|
|
153
|
+
const hours = Math.floor(seconds / 3600);
|
|
154
|
+
const minutes = Math.floor((seconds % 3600) / 60);
|
|
155
|
+
const secs = Math.floor(seconds % 60);
|
|
156
|
+
if (hours > 0) {
|
|
157
|
+
return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
|
|
158
|
+
}
|
|
159
|
+
return `${minutes}:${secs.toString().padStart(2, '0')}`;
|
|
160
|
+
}
|
|
161
|
+
export function createCommand(kernel, shell, terminal) {
|
|
162
|
+
return new TerminalCommand({
|
|
163
|
+
command: 'view',
|
|
164
|
+
description: 'View files in a new window (PDF, images, audio, video)',
|
|
165
|
+
kernel,
|
|
166
|
+
shell,
|
|
167
|
+
terminal,
|
|
168
|
+
run: async (pid, argv) => {
|
|
169
|
+
const process = kernel.processes.get(pid);
|
|
170
|
+
if (!process)
|
|
171
|
+
return 1;
|
|
172
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
173
|
+
printUsage(process, terminal);
|
|
174
|
+
return 0;
|
|
175
|
+
}
|
|
176
|
+
// Parse options
|
|
177
|
+
const options = {
|
|
178
|
+
autoplay: true,
|
|
179
|
+
loop: false,
|
|
180
|
+
muted: false,
|
|
181
|
+
volume: 100,
|
|
182
|
+
controls: true,
|
|
183
|
+
fullscreen: false,
|
|
184
|
+
quiet: false
|
|
185
|
+
};
|
|
186
|
+
const files = [];
|
|
187
|
+
for (let i = 0; i < argv.length; i++) {
|
|
188
|
+
const arg = argv[i];
|
|
189
|
+
if (arg === '--no-autoplay') {
|
|
190
|
+
options.autoplay = false;
|
|
191
|
+
}
|
|
192
|
+
else if (arg === '--loop') {
|
|
193
|
+
options.loop = true;
|
|
194
|
+
}
|
|
195
|
+
else if (arg === '--muted') {
|
|
196
|
+
options.muted = true;
|
|
197
|
+
}
|
|
198
|
+
else if (arg === '--quiet') {
|
|
199
|
+
options.quiet = true;
|
|
200
|
+
}
|
|
201
|
+
else if (arg === '--no-controls') {
|
|
202
|
+
options.controls = false;
|
|
203
|
+
}
|
|
204
|
+
else if (arg === '--fullscreen') {
|
|
205
|
+
options.fullscreen = true;
|
|
206
|
+
}
|
|
207
|
+
else if (arg === '--volume' && i + 1 < argv.length) {
|
|
208
|
+
const volumeArg = argv[i + 1];
|
|
209
|
+
if (!volumeArg) {
|
|
210
|
+
await writelnStderr(process, terminal, chalk.red(`view: missing volume value`));
|
|
211
|
+
return 1;
|
|
212
|
+
}
|
|
213
|
+
const volume = parseFloat(volumeArg);
|
|
214
|
+
if (isNaN(volume) || volume < 0 || volume > 100) {
|
|
215
|
+
await writelnStderr(process, terminal, chalk.red(`view: invalid volume: ${volumeArg} (must be 0-100)`));
|
|
216
|
+
return 1;
|
|
217
|
+
}
|
|
218
|
+
options.volume = volume;
|
|
219
|
+
i++; // Skip next argument
|
|
220
|
+
}
|
|
221
|
+
else if (arg === '--width' && i + 1 < argv.length) {
|
|
222
|
+
const widthArg = argv[i + 1];
|
|
223
|
+
if (!widthArg) {
|
|
224
|
+
await writelnStderr(process, terminal, chalk.red(`view: missing width value`));
|
|
225
|
+
return 1;
|
|
226
|
+
}
|
|
227
|
+
const width = parseInt(widthArg, 10);
|
|
228
|
+
if (isNaN(width) || width <= 0) {
|
|
229
|
+
await writelnStderr(process, terminal, chalk.red(`view: invalid width: ${widthArg}`));
|
|
230
|
+
return 1;
|
|
231
|
+
}
|
|
232
|
+
options.width = width;
|
|
233
|
+
i++; // Skip next argument
|
|
234
|
+
}
|
|
235
|
+
else if (arg === '--height' && i + 1 < argv.length) {
|
|
236
|
+
const heightArg = argv[i + 1];
|
|
237
|
+
if (!heightArg) {
|
|
238
|
+
await writelnStderr(process, terminal, chalk.red(`view: missing height value`));
|
|
239
|
+
return 1;
|
|
240
|
+
}
|
|
241
|
+
const height = parseInt(heightArg, 10);
|
|
242
|
+
if (isNaN(height) || height <= 0) {
|
|
243
|
+
await writelnStderr(process, terminal, chalk.red(`view: invalid height: ${heightArg}`));
|
|
244
|
+
return 1;
|
|
245
|
+
}
|
|
246
|
+
options.height = height;
|
|
247
|
+
i++; // Skip next argument
|
|
248
|
+
}
|
|
249
|
+
else if (arg && !arg.startsWith('--')) {
|
|
250
|
+
files.push(arg);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (files.length === 0) {
|
|
254
|
+
await writelnStderr(process, terminal, `view: missing file argument`);
|
|
255
|
+
await writelnStderr(process, terminal, `Try 'view --help' for more information.`);
|
|
256
|
+
return 1;
|
|
257
|
+
}
|
|
258
|
+
// Process each file
|
|
259
|
+
for (const file of files) {
|
|
260
|
+
const fullPath = path.resolve(shell.cwd, file);
|
|
261
|
+
try {
|
|
262
|
+
// Check if file exists
|
|
263
|
+
if (!(await shell.context.fs.promises.exists(fullPath))) {
|
|
264
|
+
await writelnStderr(process, terminal, chalk.red(`view: file not found: ${fullPath}`));
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
// Read file
|
|
268
|
+
await writelnStdout(process, terminal, chalk.blue(`Loading: ${file}...`));
|
|
269
|
+
const fileData = await shell.context.fs.promises.readFile(fullPath);
|
|
270
|
+
const fileType = detectFileType(fullPath);
|
|
271
|
+
const mimeType = getMimeType(fullPath, fileType);
|
|
272
|
+
const windowTitle = files.length > 1
|
|
273
|
+
? `${path.basename(file)} (${files.indexOf(file) + 1}/${files.length})`
|
|
274
|
+
: path.basename(file);
|
|
275
|
+
if (fileType === 'pdf') {
|
|
276
|
+
// Convert PDF to base64 and display in object tag
|
|
277
|
+
// Use chunked encoding to avoid argument limit issues with large files
|
|
278
|
+
const uint8Array = new Uint8Array(fileData);
|
|
279
|
+
let binaryString = '';
|
|
280
|
+
const chunkSize = 8192;
|
|
281
|
+
for (let i = 0; i < uint8Array.length; i += chunkSize) {
|
|
282
|
+
const chunk = uint8Array.subarray(i, i + chunkSize);
|
|
283
|
+
binaryString += String.fromCharCode(...chunk);
|
|
284
|
+
}
|
|
285
|
+
const base64Data = btoa(binaryString);
|
|
286
|
+
const dataUrl = `data:application/pdf;base64,${base64Data}`;
|
|
287
|
+
const pdfHtml = `
|
|
288
|
+
<div style="width:100%;height:100%;display:flex;flex-direction:column;background:#1e1e1e;overflow:hidden;">
|
|
289
|
+
<object data="${dataUrl}" type="application/pdf" style="width:100%;height:100%;flex:1;">
|
|
290
|
+
<p style="color:#fff;padding:20px;text-align:center;">
|
|
291
|
+
Your browser does not support PDFs.
|
|
292
|
+
<a href="${dataUrl}" style="color:#4a9eff;" download="${path.basename(file)}">Download PDF</a>
|
|
293
|
+
</p>
|
|
294
|
+
</object>
|
|
295
|
+
</div>
|
|
296
|
+
`;
|
|
297
|
+
kernel.windows.create({
|
|
298
|
+
title: windowTitle,
|
|
299
|
+
html: pdfHtml,
|
|
300
|
+
width: 800,
|
|
301
|
+
height: 600,
|
|
302
|
+
max: false
|
|
303
|
+
});
|
|
304
|
+
await writelnStdout(process, terminal, chalk.green(`Viewing: ${file}`));
|
|
305
|
+
}
|
|
306
|
+
else if (fileType === 'image') {
|
|
307
|
+
// Display image directly
|
|
308
|
+
const blob = new Blob([new Uint8Array(fileData)], { type: mimeType });
|
|
309
|
+
const url = URL.createObjectURL(blob);
|
|
310
|
+
const imageHtml = `
|
|
311
|
+
<div style="width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#1e1e1e;overflow:auto;padding:20px;box-sizing:border-box;">
|
|
312
|
+
<img src="${url}" style="max-width:100%;max-height:100%;object-fit:contain;" alt="${path.basename(file)}" />
|
|
313
|
+
</div>
|
|
314
|
+
`;
|
|
315
|
+
kernel.windows.create({
|
|
316
|
+
title: windowTitle,
|
|
317
|
+
html: imageHtml,
|
|
318
|
+
width: 800,
|
|
319
|
+
height: 600,
|
|
320
|
+
max: false
|
|
321
|
+
});
|
|
322
|
+
await writelnStdout(process, terminal, chalk.green(`Viewing: ${file}`));
|
|
323
|
+
}
|
|
324
|
+
else if (fileType === 'audio') {
|
|
325
|
+
// Handle audio similar to play command
|
|
326
|
+
const blob = new Blob([new Uint8Array(fileData)], { type: mimeType });
|
|
327
|
+
const url = URL.createObjectURL(blob);
|
|
328
|
+
// Load audio metadata
|
|
329
|
+
const audioElement = document.createElement('audio');
|
|
330
|
+
audioElement.src = url;
|
|
331
|
+
audioElement.preload = 'metadata';
|
|
332
|
+
let duration = 0;
|
|
333
|
+
try {
|
|
334
|
+
const metadata = await loadAudioMetadata(audioElement);
|
|
335
|
+
duration = metadata.duration;
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
await writelnStderr(process, terminal, chalk.yellow(`view: warning: could not load metadata for ${file}`));
|
|
339
|
+
}
|
|
340
|
+
// Set audio properties
|
|
341
|
+
audioElement.volume = options.volume / 100;
|
|
342
|
+
if (options.autoplay)
|
|
343
|
+
audioElement.autoplay = true;
|
|
344
|
+
if (options.loop)
|
|
345
|
+
audioElement.loop = true;
|
|
346
|
+
if (options.muted)
|
|
347
|
+
audioElement.muted = true;
|
|
348
|
+
if (options.quiet) {
|
|
349
|
+
// Background playback - no window
|
|
350
|
+
audioElement.play().catch((error) => {
|
|
351
|
+
// Autoplay may be blocked by browser, but that's okay for quiet mode
|
|
352
|
+
console.warn('Autoplay blocked:', error);
|
|
353
|
+
});
|
|
354
|
+
if (duration > 0) {
|
|
355
|
+
const durationStr = formatDuration(duration);
|
|
356
|
+
await writelnStdout(process, terminal, chalk.green(`Playing in background: ${file} (${durationStr})`));
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
await writelnStdout(process, terminal, chalk.green(`Playing in background: ${file}`));
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
// Create a simple audio player window
|
|
364
|
+
const audioId = `audio-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
365
|
+
const audioHtml = `
|
|
366
|
+
<div style="width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1e1e1e;color:#fff;font-family:monospace;padding:20px;box-sizing:border-box;">
|
|
367
|
+
<div style="font-size:18px;margin-bottom:20px;text-align:center;word-break:break-word;">${path.basename(file)}</div>
|
|
368
|
+
<audio id="${audioId}" src="${url}" ${options.autoplay ? 'autoplay' : ''} ${options.loop ? 'loop' : ''} ${options.muted ? 'muted' : ''} controls style="width:100%;max-width:600px;"></audio>
|
|
369
|
+
</div>
|
|
370
|
+
<script>
|
|
371
|
+
(function() {
|
|
372
|
+
const audio = document.getElementById('${audioId}');
|
|
373
|
+
if (audio) {
|
|
374
|
+
audio.volume = ${options.volume / 100};
|
|
375
|
+
audio.addEventListener('play', () => console.log('Playing: ${file}'));
|
|
376
|
+
audio.addEventListener('ended', () => console.log('Finished: ${file}'));
|
|
377
|
+
}
|
|
378
|
+
})();
|
|
379
|
+
</script>
|
|
380
|
+
`;
|
|
381
|
+
kernel.windows.create({
|
|
382
|
+
title: windowTitle,
|
|
383
|
+
html: audioHtml,
|
|
384
|
+
width: 500,
|
|
385
|
+
height: 200,
|
|
386
|
+
max: false
|
|
387
|
+
});
|
|
388
|
+
if (duration > 0) {
|
|
389
|
+
const durationStr = formatDuration(duration);
|
|
390
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file} (${durationStr})`));
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file}`));
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
else if (fileType === 'video') {
|
|
398
|
+
// Handle video similar to video command
|
|
399
|
+
const blob = new Blob([new Uint8Array(fileData)], { type: mimeType });
|
|
400
|
+
const url = URL.createObjectURL(blob);
|
|
401
|
+
// Load video metadata
|
|
402
|
+
const videoElement = document.createElement('video');
|
|
403
|
+
videoElement.src = url;
|
|
404
|
+
videoElement.preload = 'metadata';
|
|
405
|
+
let videoWidth;
|
|
406
|
+
let videoHeight;
|
|
407
|
+
let duration;
|
|
408
|
+
try {
|
|
409
|
+
const metadata = await loadVideoMetadata(videoElement);
|
|
410
|
+
videoWidth = metadata.width;
|
|
411
|
+
videoHeight = metadata.height;
|
|
412
|
+
duration = metadata.duration;
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
await writelnStderr(process, terminal, chalk.yellow(`view: warning: could not load metadata for ${file}, using default size`));
|
|
416
|
+
videoWidth = 640;
|
|
417
|
+
videoHeight = 360;
|
|
418
|
+
duration = 0;
|
|
419
|
+
}
|
|
420
|
+
// Calculate window dimensions
|
|
421
|
+
const { innerWidth, innerHeight } = window;
|
|
422
|
+
let windowWidth;
|
|
423
|
+
let windowHeight;
|
|
424
|
+
if (options.fullscreen) {
|
|
425
|
+
windowWidth = innerWidth;
|
|
426
|
+
windowHeight = innerHeight;
|
|
427
|
+
}
|
|
428
|
+
else if (options.width && options.height) {
|
|
429
|
+
windowWidth = options.width;
|
|
430
|
+
windowHeight = options.height;
|
|
431
|
+
}
|
|
432
|
+
else if (options.width) {
|
|
433
|
+
windowWidth = options.width;
|
|
434
|
+
windowHeight = Math.round((videoHeight / videoWidth) * windowWidth);
|
|
435
|
+
}
|
|
436
|
+
else if (options.height) {
|
|
437
|
+
windowHeight = options.height;
|
|
438
|
+
windowWidth = Math.round((videoWidth / videoHeight) * windowHeight);
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
// Auto-size: fit to screen if video is larger, otherwise use video dimensions
|
|
442
|
+
const scale = Math.min(innerWidth / videoWidth, innerHeight / videoHeight, 1);
|
|
443
|
+
windowWidth = Math.round(videoWidth * scale);
|
|
444
|
+
windowHeight = Math.round(videoHeight * scale);
|
|
445
|
+
}
|
|
446
|
+
// Ensure minimum size
|
|
447
|
+
windowWidth = Math.max(windowWidth, 320);
|
|
448
|
+
windowHeight = Math.max(windowHeight, 180);
|
|
449
|
+
// Build video attributes
|
|
450
|
+
const videoAttrs = [];
|
|
451
|
+
if (options.autoplay)
|
|
452
|
+
videoAttrs.push('autoplay');
|
|
453
|
+
if (options.controls)
|
|
454
|
+
videoAttrs.push('controls');
|
|
455
|
+
if (options.loop)
|
|
456
|
+
videoAttrs.push('loop');
|
|
457
|
+
if (options.muted)
|
|
458
|
+
videoAttrs.push('muted');
|
|
459
|
+
videoAttrs.push('style="width:100%;height:100%;object-fit:contain"');
|
|
460
|
+
const videoHtml = `<video src="${url}" ${videoAttrs.join(' ')}></video>`;
|
|
461
|
+
// Create window
|
|
462
|
+
kernel.windows.create({
|
|
463
|
+
title: windowTitle,
|
|
464
|
+
html: videoHtml,
|
|
465
|
+
width: windowWidth,
|
|
466
|
+
height: windowHeight,
|
|
467
|
+
max: options.fullscreen
|
|
468
|
+
});
|
|
469
|
+
if (duration > 0) {
|
|
470
|
+
const minutes = Math.floor(duration / 60);
|
|
471
|
+
const seconds = Math.floor(duration % 60);
|
|
472
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file} (${minutes}:${seconds.toString().padStart(2, '0')})`));
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file}`));
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
await writelnStderr(process, terminal, chalk.red(`view: error viewing ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
481
|
+
return 1;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
return 0;
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AA2B/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA2V/F"}
|