@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,250 @@
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 printUsage(process, terminal) {
6
+ const usage = `Usage: video [OPTIONS] [FILE...]
7
+ Play a video file in a window.
8
+
9
+ --help display this help and exit
10
+ --no-autoplay don't start playing automatically
11
+ --no-controls hide video controls
12
+ --loop loop the video
13
+ --muted start muted
14
+ --fullscreen open in fullscreen mode
15
+ --width <width> set window width (default: video width or screen width)
16
+ --height <height> set window height (default: video height or screen height)
17
+
18
+ Examples:
19
+ video movie.mp4 play a video file
20
+ video --loop clip.mp4 play a video in a loop
21
+ video --no-autoplay video.mp4 load video without auto-playing
22
+ video --fullscreen movie.mp4 play video in fullscreen mode
23
+ video video1.mp4 video2.mp4 play multiple videos`;
24
+ writelnStderr(process, terminal, usage);
25
+ }
26
+ function getMimeType(filePath) {
27
+ const ext = path.extname(filePath).toLowerCase();
28
+ const mimeTypes = {
29
+ '.mp4': 'video/mp4',
30
+ '.webm': 'video/webm',
31
+ '.ogg': 'video/ogg',
32
+ '.ogv': 'video/ogg',
33
+ '.mov': 'video/quicktime',
34
+ '.avi': 'video/x-msvideo',
35
+ '.mkv': 'video/x-matroska',
36
+ '.m4v': 'video/mp4',
37
+ '.flv': 'video/x-flv',
38
+ '.wmv': 'video/x-ms-wmv',
39
+ '.3gp': 'video/3gpp'
40
+ };
41
+ return mimeTypes[ext] || 'video/mp4';
42
+ }
43
+ async function loadVideoMetadata(videoElement) {
44
+ return new Promise((resolve, reject) => {
45
+ const timeout = setTimeout(() => {
46
+ reject(new Error('Timeout loading video metadata'));
47
+ }, 10000);
48
+ videoElement.onloadedmetadata = () => {
49
+ clearTimeout(timeout);
50
+ resolve({
51
+ width: videoElement.videoWidth,
52
+ height: videoElement.videoHeight,
53
+ duration: videoElement.duration
54
+ });
55
+ };
56
+ videoElement.onerror = () => {
57
+ clearTimeout(timeout);
58
+ reject(new Error('Failed to load video metadata'));
59
+ };
60
+ });
61
+ }
62
+ export function createCommand(kernel, shell, terminal) {
63
+ return new TerminalCommand({
64
+ command: 'video',
65
+ description: 'Play a video file',
66
+ kernel,
67
+ shell,
68
+ terminal,
69
+ run: async (pid, argv) => {
70
+ const process = kernel.processes.get(pid);
71
+ if (!process)
72
+ return 1;
73
+ if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
74
+ printUsage(process, terminal);
75
+ return 0;
76
+ }
77
+ // Parse options
78
+ const options = {
79
+ autoplay: true,
80
+ controls: true,
81
+ loop: false,
82
+ muted: false,
83
+ fullscreen: false
84
+ };
85
+ const files = [];
86
+ for (let i = 0; i < argv.length; i++) {
87
+ const arg = argv[i];
88
+ if (arg === '--no-autoplay') {
89
+ options.autoplay = false;
90
+ }
91
+ else if (arg === '--no-controls') {
92
+ options.controls = false;
93
+ }
94
+ else if (arg === '--loop') {
95
+ options.loop = true;
96
+ }
97
+ else if (arg === '--muted') {
98
+ options.muted = true;
99
+ }
100
+ else if (arg === '--fullscreen') {
101
+ options.fullscreen = true;
102
+ }
103
+ else if (arg === '--width' && i + 1 < argv.length) {
104
+ const widthArg = argv[i + 1];
105
+ if (!widthArg) {
106
+ await writelnStderr(process, terminal, chalk.red(`video: missing width value`));
107
+ return 1;
108
+ }
109
+ const width = parseInt(widthArg, 10);
110
+ if (isNaN(width) || width <= 0) {
111
+ await writelnStderr(process, terminal, chalk.red(`video: invalid width: ${widthArg}`));
112
+ return 1;
113
+ }
114
+ options.width = width;
115
+ i++; // Skip next argument
116
+ }
117
+ else if (arg === '--height' && i + 1 < argv.length) {
118
+ const heightArg = argv[i + 1];
119
+ if (!heightArg) {
120
+ await writelnStderr(process, terminal, chalk.red(`video: missing height value`));
121
+ return 1;
122
+ }
123
+ const height = parseInt(heightArg, 10);
124
+ if (isNaN(height) || height <= 0) {
125
+ await writelnStderr(process, terminal, chalk.red(`video: invalid height: ${heightArg}`));
126
+ return 1;
127
+ }
128
+ options.height = height;
129
+ i++; // Skip next argument
130
+ }
131
+ else if (arg && !arg.startsWith('--')) {
132
+ files.push(arg);
133
+ }
134
+ }
135
+ if (files.length === 0) {
136
+ await writelnStderr(process, terminal, `video: missing file argument`);
137
+ await writelnStderr(process, terminal, `Try 'video --help' for more information.`);
138
+ return 1;
139
+ }
140
+ // Process each video file
141
+ for (const file of files) {
142
+ const fullPath = path.resolve(shell.cwd, file);
143
+ try {
144
+ // Check if file exists
145
+ if (!(await shell.context.fs.promises.exists(fullPath))) {
146
+ await writelnStderr(process, terminal, chalk.red(`video: file not found: ${fullPath}`));
147
+ continue;
148
+ }
149
+ // Read file
150
+ await writelnStdout(process, terminal, chalk.blue(`Loading video: ${file}...`));
151
+ const fileData = await shell.context.fs.promises.readFile(fullPath);
152
+ const mimeType = getMimeType(fullPath);
153
+ const blob = new Blob([new Uint8Array(fileData)], { type: mimeType });
154
+ const url = URL.createObjectURL(blob);
155
+ // Load video metadata
156
+ const videoElement = document.createElement('video');
157
+ videoElement.src = url;
158
+ videoElement.preload = 'metadata';
159
+ let videoWidth;
160
+ let videoHeight;
161
+ let duration;
162
+ try {
163
+ const metadata = await loadVideoMetadata(videoElement);
164
+ videoWidth = metadata.width;
165
+ videoHeight = metadata.height;
166
+ duration = metadata.duration;
167
+ }
168
+ catch (error) {
169
+ await writelnStderr(process, terminal, chalk.yellow(`video: warning: could not load metadata for ${file}, using default size`));
170
+ videoWidth = 640;
171
+ videoHeight = 360;
172
+ duration = 0;
173
+ }
174
+ // Calculate window dimensions
175
+ const { innerWidth, innerHeight } = window;
176
+ let windowWidth;
177
+ let windowHeight;
178
+ if (options.fullscreen) {
179
+ windowWidth = innerWidth;
180
+ windowHeight = innerHeight;
181
+ }
182
+ else if (options.width && options.height) {
183
+ windowWidth = options.width;
184
+ windowHeight = options.height;
185
+ }
186
+ else if (options.width) {
187
+ windowWidth = options.width;
188
+ windowHeight = Math.round((videoHeight / videoWidth) * windowWidth);
189
+ }
190
+ else if (options.height) {
191
+ windowHeight = options.height;
192
+ windowWidth = Math.round((videoWidth / videoHeight) * windowHeight);
193
+ }
194
+ else {
195
+ // Auto-size: fit to screen if video is larger, otherwise use video dimensions
196
+ const scale = Math.min(innerWidth / videoWidth, innerHeight / videoHeight, 1);
197
+ windowWidth = Math.round(videoWidth * scale);
198
+ windowHeight = Math.round(videoHeight * scale);
199
+ }
200
+ // Ensure minimum size
201
+ windowWidth = Math.max(windowWidth, 320);
202
+ windowHeight = Math.max(windowHeight, 180);
203
+ // Build video attributes
204
+ const videoAttrs = [];
205
+ if (options.autoplay)
206
+ videoAttrs.push('autoplay');
207
+ if (options.controls)
208
+ videoAttrs.push('controls');
209
+ if (options.loop)
210
+ videoAttrs.push('loop');
211
+ if (options.muted)
212
+ videoAttrs.push('muted');
213
+ videoAttrs.push('style="width:100%;height:100%;object-fit:contain"');
214
+ const videoHtml = `<video src="${url}" ${videoAttrs.join(' ')}></video>`;
215
+ // Create window
216
+ const windowTitle = files.length > 1
217
+ ? `${path.basename(file)} (${files.indexOf(file) + 1}/${files.length})`
218
+ : path.basename(file);
219
+ kernel.windows.create({
220
+ title: windowTitle,
221
+ html: videoHtml,
222
+ width: windowWidth,
223
+ height: windowHeight,
224
+ max: options.fullscreen
225
+ });
226
+ // Clean up URL when window is closed (if possible)
227
+ // Note: This is a best-effort cleanup since we don't have direct access to window close events
228
+ setTimeout(() => {
229
+ // Cleanup after a delay to allow video to load
230
+ // In a real implementation, you'd want to hook into window close events
231
+ }, 1000);
232
+ if (duration > 0) {
233
+ const minutes = Math.floor(duration / 60);
234
+ const seconds = Math.floor(duration % 60);
235
+ await writelnStdout(process, terminal, chalk.green(`Playing: ${file} (${minutes}:${seconds.toString().padStart(2, '0')})`));
236
+ }
237
+ else {
238
+ await writelnStdout(process, terminal, chalk.green(`Playing: ${file}`));
239
+ }
240
+ }
241
+ catch (error) {
242
+ await writelnStderr(process, terminal, chalk.red(`video: error playing ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`));
243
+ return 1;
244
+ }
245
+ }
246
+ return 0;
247
+ }
248
+ });
249
+ }
250
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/commands/video.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=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAqL/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqV/F"}