@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.
Files changed (46) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +26 -0
  3. package/dist/commands/cron.d.ts +4 -0
  4. package/dist/commands/cron.d.ts.map +1 -0
  5. package/dist/commands/cron.js +439 -0
  6. package/dist/commands/cron.js.map +1 -0
  7. package/dist/commands/man.d.ts.map +1 -1
  8. package/dist/commands/man.js +10 -0
  9. package/dist/commands/man.js.map +1 -1
  10. package/dist/commands/open.d.ts +4 -0
  11. package/dist/commands/open.d.ts.map +1 -0
  12. package/dist/commands/open.js +74 -0
  13. package/dist/commands/open.js.map +1 -0
  14. package/dist/commands/play.d.ts +4 -0
  15. package/dist/commands/play.d.ts.map +1 -0
  16. package/dist/commands/play.js +231 -0
  17. package/dist/commands/play.js.map +1 -0
  18. package/dist/commands/tar.d.ts.map +1 -1
  19. package/dist/commands/tar.js +67 -17
  20. package/dist/commands/tar.js.map +1 -1
  21. package/dist/commands/video.d.ts +4 -0
  22. package/dist/commands/video.d.ts.map +1 -0
  23. package/dist/commands/video.js +250 -0
  24. package/dist/commands/video.js.map +1 -0
  25. package/dist/commands/view.d.ts +4 -0
  26. package/dist/commands/view.d.ts.map +1 -0
  27. package/dist/commands/view.js +488 -0
  28. package/dist/commands/view.js.map +1 -0
  29. package/dist/commands/web.d.ts +4 -0
  30. package/dist/commands/web.d.ts.map +1 -0
  31. package/dist/commands/web.js +348 -0
  32. package/dist/commands/web.js.map +1 -0
  33. package/dist/index.d.ts +6 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +20 -2
  36. package/dist/index.js.map +1 -1
  37. package/package.json +3 -2
  38. package/src/commands/cron.ts +499 -0
  39. package/src/commands/man.ts +8 -0
  40. package/src/commands/open.ts +84 -0
  41. package/src/commands/play.ts +249 -0
  42. package/src/commands/tar.ts +62 -19
  43. package/src/commands/video.ts +267 -0
  44. package/src/commands/view.ts +526 -0
  45. package/src/commands/web.ts +377 -0
  46. 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,4 @@
1
+ import type { Kernel, Shell, Terminal } from '@ecmaos/types';
2
+ import { TerminalCommand } from '../shared/terminal-command.js';
3
+ export declare function createCommand(kernel: Kernel, shell: Shell, terminal: Terminal): TerminalCommand;
4
+ //# sourceMappingURL=web.d.ts.map
@@ -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"}