@ecmaos/coreutils 0.1.4 → 0.1.5

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,5 +1,5 @@
1
1
 
2
2
 
3
- > @ecmaos/coreutils@0.1.4 build /home/archmag0s/code/ecmaos/core/utils
3
+ > @ecmaos/coreutils@0.1.5 build /home/archmag0s/code/ecmaos/core/utils
4
4
  > tsc
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @ecmaos/coreutils
2
2
 
3
+ ## 0.1.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 3a329b1: Features
8
+
9
+ - Add head and tail commands for viewing file contents
10
+ - Add grep command for text search
11
+ - Enhance terminal input handling and improve command mode interactions in editor
12
+ - Add stdin support for hex command
13
+
14
+ Fixes
15
+
16
+ - Improve error handling and usage messages for hex command
17
+ - Fix filesystem entry descriptions in ls command
18
+
19
+ Refactoring
20
+
21
+ - Simplify first read logic in hex command
22
+ - Cleanup unused imports
23
+
24
+ - Updated dependencies [3a329b1]
25
+ - @ecmaos/types@0.4.4
26
+
3
27
  ## 0.1.4
4
28
 
5
29
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"cat.d.ts","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAG/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA+F/F"}
1
+ {"version":3,"file":"cat.d.ts","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqH/F"}
@@ -1,7 +1,6 @@
1
1
  import path from 'path';
2
2
  import { TerminalEvents } from '@ecmaos/types';
3
3
  import { TerminalCommand } from '../shared/terminal-command.js';
4
- import { writeStdout } from '../shared/helpers.js';
5
4
  export function createCommand(kernel, shell, terminal) {
6
5
  return new TerminalCommand({
7
6
  command: 'cat',
@@ -19,6 +18,8 @@ export function createCommand(kernel, shell, terminal) {
19
18
  return 1;
20
19
  // Get a single writer for the entire operation
21
20
  const writer = process.stdout.getWriter();
21
+ const isTTY = process.stdoutIsTTY ?? false;
22
+ let lastByte;
22
23
  try {
23
24
  // If no files specified, read from stdin
24
25
  if (!argv.path || !argv.path[0]) {
@@ -28,12 +29,19 @@ export function createCommand(kernel, shell, terminal) {
28
29
  const { done, value } = await reader.read();
29
30
  if (done)
30
31
  break;
32
+ if (value.length > 0) {
33
+ lastByte = value[value.length - 1];
34
+ }
31
35
  await writer.write(value);
32
36
  }
33
37
  }
34
38
  finally {
35
39
  reader.releaseLock();
36
40
  }
41
+ // Add newline at end if outputting to terminal and last byte wasn't newline
42
+ if (isTTY && lastByte !== undefined && lastByte !== 0x0A) {
43
+ await writer.write(new Uint8Array([0x0A]));
44
+ }
37
45
  return 0;
38
46
  }
39
47
  // Otherwise process files
@@ -56,7 +64,11 @@ export function createCommand(kernel, shell, terminal) {
56
64
  const data = new Uint8Array(chunkSize);
57
65
  const readSize = Math.min(chunkSize, stat.size - bytesRead);
58
66
  await handle.read(data, 0, readSize, bytesRead);
59
- await writer.write(data.subarray(0, readSize));
67
+ const chunk = data.subarray(0, readSize);
68
+ if (chunk.length > 0) {
69
+ lastByte = chunk[chunk.length - 1];
70
+ }
71
+ await writer.write(chunk);
60
72
  bytesRead += readSize;
61
73
  }
62
74
  }
@@ -75,7 +87,11 @@ export function createCommand(kernel, shell, terminal) {
75
87
  if (bytesRead > 0) {
76
88
  const bytesToWrite = maxBytes ? Math.min(bytesRead, maxBytes - totalBytesRead) : bytesRead;
77
89
  if (bytesToWrite > 0) {
78
- await writer.write(data.subarray(0, bytesToWrite));
90
+ const chunk = data.subarray(0, bytesToWrite);
91
+ if (chunk.length > 0) {
92
+ lastByte = chunk[chunk.length - 1];
93
+ }
94
+ await writer.write(chunk);
79
95
  totalBytesRead += bytesToWrite;
80
96
  }
81
97
  }
@@ -86,11 +102,14 @@ export function createCommand(kernel, shell, terminal) {
86
102
  kernel.terminal.events.off(TerminalEvents.INTERRUPT, interruptHandler);
87
103
  }
88
104
  }
105
+ // Add newline at end if outputting to terminal and last byte wasn't newline
106
+ if (isTTY && lastByte !== undefined && lastByte !== 0x0A) {
107
+ await writer.write(new Uint8Array([0x0A]));
108
+ }
89
109
  return 0;
90
110
  }
91
111
  finally {
92
112
  writer.releaseLock();
93
- await writeStdout(process, terminal, '\n');
94
113
  }
95
114
  }
96
115
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cat.js","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cat.js","sourceRoot":"","sources":["../../src/commands/cat.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/commands/echo.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;AAE/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA6B/F"}
1
+ {"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/commands/echo.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;AAE/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAgC/F"}
@@ -8,11 +8,14 @@ export function createCommand(kernel, shell, terminal) {
8
8
  terminal,
9
9
  options: [
10
10
  { name: 'help', type: Boolean, description: kernel.i18n.t('Display help') },
11
+ { name: 'n', type: Boolean, alias: 'n', description: 'Do not output the trailing newline' },
11
12
  { name: 'text', type: String, typeLabel: '{underline text}', defaultOption: true, multiple: true, description: 'The text to print' }
12
13
  ],
13
14
  run: async (argv, process) => {
15
+ const noNewline = argv.n || false;
14
16
  const text = (argv.text || []).join(' ');
15
- const data = new TextEncoder().encode(text + '\n');
17
+ const output = noNewline ? text : text + '\n';
18
+ const data = new TextEncoder().encode(output);
16
19
  if (process) {
17
20
  const writer = process.stdout.getWriter();
18
21
  try {
@@ -23,7 +26,7 @@ export function createCommand(kernel, shell, terminal) {
23
26
  }
24
27
  }
25
28
  else {
26
- terminal.write(text + '\n');
29
+ terminal.write(output);
27
30
  }
28
31
  return 0;
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/commands/echo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAY,EAAE,QAAkB;IAC5E,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,wCAAwC;QACrD,MAAM;QACN,KAAK;QACL,QAAQ;QACR,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE;YAC3E,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;SACrI;QACD,GAAG,EAAE,KAAK,EAAE,IAAwB,EAAE,OAAiB,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,CAAE,IAAI,CAAC,IAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACtD,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;YAElD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;gBACzC,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC1B,CAAC;wBAAS,CAAC;oBACT,MAAM,CAAC,WAAW,EAAE,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;YAC7B,CAAC;YAED,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/commands/echo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAY,EAAE,QAAkB;IAC5E,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,wCAAwC;QACrD,MAAM;QACN,KAAK;QACL,QAAQ;QACR,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE;YAC3E,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAC3F,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE;SACrI;QACD,GAAG,EAAE,KAAK,EAAE,IAAwB,EAAE,OAAiB,EAAE,EAAE;YACzD,MAAM,SAAS,GAAI,IAAI,CAAC,CAAa,IAAI,KAAK,CAAA;YAC9C,MAAM,IAAI,GAAG,CAAE,IAAI,CAAC,IAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACtD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;YAC7C,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAE7C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;gBACzC,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC1B,CAAC;wBAAS,CAAC;oBACT,MAAM,CAAC,WAAW,EAAE,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACxB,CAAC;YAED,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -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=grep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../src/commands/grep.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAG/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAkJ/F"}
@@ -0,0 +1,140 @@
1
+ import path from 'path';
2
+ import { TerminalEvents } from '@ecmaos/types';
3
+ import { TerminalCommand } from '../shared/terminal-command.js';
4
+ import { writelnStderr } from '../shared/helpers.js';
5
+ export function createCommand(kernel, shell, terminal) {
6
+ return new TerminalCommand({
7
+ command: 'grep',
8
+ description: 'Search for patterns in files or standard input',
9
+ kernel,
10
+ shell,
11
+ terminal,
12
+ options: [
13
+ { name: 'help', type: Boolean, description: kernel.i18n.t('Display help') },
14
+ { name: 'ignore-case', type: Boolean, alias: 'i', description: 'Ignore case distinctions' },
15
+ { name: 'line-number', type: Boolean, alias: 'n', description: 'Print line number with output lines' },
16
+ { name: 'args', type: String, defaultOption: true, multiple: true, description: 'Pattern and file(s) to search' }
17
+ ],
18
+ run: async (argv, process) => {
19
+ if (!process)
20
+ return 1;
21
+ const args = argv.args || [];
22
+ if (args.length === 0 || !args[0]) {
23
+ await writelnStderr(process, terminal, 'grep: pattern is required');
24
+ return 1;
25
+ }
26
+ const pattern = args[0];
27
+ const files = args.slice(1);
28
+ const ignoreCase = argv['ignore-case'] || false;
29
+ const showLineNumbers = argv['line-number'] || false;
30
+ const flags = ignoreCase ? 'i' : '';
31
+ let regex;
32
+ try {
33
+ regex = new RegExp(pattern, flags);
34
+ }
35
+ catch (error) {
36
+ await writelnStderr(process, terminal, `grep: invalid pattern: ${error instanceof Error ? error.message : 'Unknown error'}`);
37
+ return 1;
38
+ }
39
+ const writer = process.stdout.getWriter();
40
+ let exitCode = 0;
41
+ try {
42
+ if (files.length === 0) {
43
+ if (!process.stdin) {
44
+ await writelnStderr(process, terminal, 'grep: No input provided');
45
+ return 1;
46
+ }
47
+ const reader = process.stdin.getReader();
48
+ let currentLineNumber = 1;
49
+ let buffer = '';
50
+ try {
51
+ while (true) {
52
+ const { done, value } = await reader.read();
53
+ if (done)
54
+ break;
55
+ const chunk = new TextDecoder().decode(value, { stream: true });
56
+ buffer += chunk;
57
+ const lines = buffer.split('\n');
58
+ buffer = lines.pop() || '';
59
+ for (const line of lines) {
60
+ if (regex.test(line)) {
61
+ const output = showLineNumbers ? `${currentLineNumber}:${line}\n` : `${line}\n`;
62
+ await writer.write(new TextEncoder().encode(output));
63
+ }
64
+ currentLineNumber++;
65
+ }
66
+ }
67
+ if (buffer && regex.test(buffer)) {
68
+ const output = showLineNumbers ? `${currentLineNumber}:${buffer}\n` : `${buffer}\n`;
69
+ await writer.write(new TextEncoder().encode(output));
70
+ }
71
+ }
72
+ finally {
73
+ reader.releaseLock();
74
+ }
75
+ }
76
+ else {
77
+ for (const file of files) {
78
+ const fullPath = path.resolve(shell.cwd, file);
79
+ let interrupted = false;
80
+ const interruptHandler = () => { interrupted = true; };
81
+ kernel.terminal.events.on(TerminalEvents.INTERRUPT, interruptHandler);
82
+ try {
83
+ if (fullPath.startsWith('/dev')) {
84
+ await writelnStderr(process, terminal, `grep: ${file}: cannot search device files`);
85
+ exitCode = 1;
86
+ continue;
87
+ }
88
+ const handle = await shell.context.fs.promises.open(fullPath, 'r');
89
+ const stat = await shell.context.fs.promises.stat(fullPath);
90
+ let bytesRead = 0;
91
+ const chunkSize = 1024;
92
+ let buffer = '';
93
+ let currentLineNumber = 1;
94
+ while (bytesRead < stat.size) {
95
+ if (interrupted)
96
+ break;
97
+ const data = new Uint8Array(chunkSize);
98
+ const readSize = Math.min(chunkSize, stat.size - bytesRead);
99
+ await handle.read(data, 0, readSize, bytesRead);
100
+ const chunk = data.subarray(0, readSize);
101
+ const text = new TextDecoder().decode(chunk, { stream: true });
102
+ buffer += text;
103
+ const lines = buffer.split('\n');
104
+ buffer = lines.pop() || '';
105
+ for (const line of lines) {
106
+ if (regex.test(line)) {
107
+ const prefix = files.length > 1 ? `${file}:` : '';
108
+ const lineNumPrefix = showLineNumbers ? `${currentLineNumber}:` : '';
109
+ const output = `${prefix}${lineNumPrefix}${line}\n`;
110
+ await writer.write(new TextEncoder().encode(output));
111
+ }
112
+ currentLineNumber++;
113
+ }
114
+ bytesRead += readSize;
115
+ }
116
+ if (buffer && regex.test(buffer)) {
117
+ const prefix = files.length > 1 ? `${file}:` : '';
118
+ const lineNumPrefix = showLineNumbers ? `${currentLineNumber}:` : '';
119
+ const output = `${prefix}${lineNumPrefix}${buffer}\n`;
120
+ await writer.write(new TextEncoder().encode(output));
121
+ }
122
+ }
123
+ catch (error) {
124
+ await writelnStderr(process, terminal, `grep: ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
125
+ exitCode = 1;
126
+ }
127
+ finally {
128
+ kernel.terminal.events.off(TerminalEvents.INTERRUPT, interruptHandler);
129
+ }
130
+ }
131
+ }
132
+ return exitCode;
133
+ }
134
+ finally {
135
+ writer.releaseLock();
136
+ }
137
+ }
138
+ });
139
+ }
140
+ //# sourceMappingURL=grep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../src/commands/grep.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=head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"head.d.ts","sourceRoot":"","sources":["../../src/commands/head.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAmK/F"}
@@ -0,0 +1,162 @@
1
+ import path from 'path';
2
+ import { TerminalEvents } from '@ecmaos/types';
3
+ import { TerminalCommand } from '../shared/terminal-command.js';
4
+ export function createCommand(kernel, shell, terminal) {
5
+ return new TerminalCommand({
6
+ command: 'head',
7
+ description: 'Print the first lines of files',
8
+ kernel,
9
+ shell,
10
+ terminal,
11
+ options: [
12
+ { name: 'help', type: Boolean, description: kernel.i18n.t('Display help') },
13
+ { name: 'lines', type: Number, alias: 'n', description: 'Print the first NUM lines instead of the first 10' },
14
+ { name: 'path', type: String, typeLabel: '{underline path}', defaultOption: true, multiple: true, description: 'The path(s) to the file(s) to read' }
15
+ ],
16
+ run: async (argv, process) => {
17
+ if (!process)
18
+ return 1;
19
+ const writer = process.stdout.getWriter();
20
+ const numLines = argv.lines ?? 10;
21
+ try {
22
+ if (!argv.path || !argv.path[0]) {
23
+ if (!process.stdin) {
24
+ return 0;
25
+ }
26
+ const reader = process.stdin.getReader();
27
+ const decoder = new TextDecoder();
28
+ const lines = [];
29
+ let buffer = '';
30
+ try {
31
+ while (true) {
32
+ let readResult;
33
+ try {
34
+ readResult = await reader.read();
35
+ }
36
+ catch (error) {
37
+ if (error instanceof Error) {
38
+ throw error;
39
+ }
40
+ break;
41
+ }
42
+ const { done, value } = readResult;
43
+ if (done) {
44
+ buffer += decoder.decode();
45
+ break;
46
+ }
47
+ if (value) {
48
+ buffer += decoder.decode(value, { stream: true });
49
+ const newLines = buffer.split('\n');
50
+ buffer = newLines.pop() || '';
51
+ lines.push(...newLines);
52
+ if (lines.length >= numLines)
53
+ break;
54
+ }
55
+ }
56
+ if (buffer && lines.length < numLines) {
57
+ lines.push(buffer);
58
+ }
59
+ }
60
+ finally {
61
+ try {
62
+ reader.releaseLock();
63
+ }
64
+ catch {
65
+ }
66
+ }
67
+ const output = lines.slice(0, numLines).join('\n');
68
+ if (output) {
69
+ await writer.write(new TextEncoder().encode(output + '\n'));
70
+ }
71
+ return 0;
72
+ }
73
+ const files = argv.path || [];
74
+ const isMultipleFiles = files.length > 1;
75
+ for (let i = 0; i < files.length; i++) {
76
+ const file = files[i];
77
+ if (!file)
78
+ continue;
79
+ const fullPath = path.resolve(shell.cwd, file);
80
+ if (isMultipleFiles) {
81
+ const header = i > 0 ? '\n' : '';
82
+ await writer.write(new TextEncoder().encode(`${header}==> ${file} <==\n`));
83
+ }
84
+ let interrupted = false;
85
+ const interruptHandler = () => { interrupted = true; };
86
+ kernel.terminal.events.on(TerminalEvents.INTERRUPT, interruptHandler);
87
+ try {
88
+ if (!fullPath.startsWith('/dev')) {
89
+ const handle = await shell.context.fs.promises.open(fullPath, 'r');
90
+ const stat = await shell.context.fs.promises.stat(fullPath);
91
+ const decoder = new TextDecoder();
92
+ const lines = [];
93
+ let buffer = '';
94
+ let bytesRead = 0;
95
+ const chunkSize = 1024;
96
+ while (bytesRead < stat.size && lines.length < numLines) {
97
+ if (interrupted)
98
+ break;
99
+ const data = new Uint8Array(chunkSize);
100
+ const readSize = Math.min(chunkSize, stat.size - bytesRead);
101
+ await handle.read(data, 0, readSize, bytesRead);
102
+ const chunk = data.subarray(0, readSize);
103
+ buffer += decoder.decode(chunk, { stream: true });
104
+ const newLines = buffer.split('\n');
105
+ buffer = newLines.pop() || '';
106
+ lines.push(...newLines);
107
+ bytesRead += readSize;
108
+ if (lines.length >= numLines)
109
+ break;
110
+ }
111
+ if (buffer && lines.length < numLines) {
112
+ lines.push(buffer);
113
+ }
114
+ const output = lines.slice(0, numLines).join('\n');
115
+ if (output) {
116
+ await writer.write(new TextEncoder().encode(output + '\n'));
117
+ }
118
+ }
119
+ else {
120
+ const device = await shell.context.fs.promises.open(fullPath);
121
+ const decoder = new TextDecoder();
122
+ const lines = [];
123
+ let buffer = '';
124
+ const chunkSize = 1024;
125
+ const data = new Uint8Array(chunkSize);
126
+ let bytesRead = 0;
127
+ do {
128
+ if (interrupted)
129
+ break;
130
+ const result = await device.read(data);
131
+ bytesRead = result.bytesRead;
132
+ if (bytesRead > 0) {
133
+ buffer += decoder.decode(data.subarray(0, bytesRead), { stream: true });
134
+ const newLines = buffer.split('\n');
135
+ buffer = newLines.pop() || '';
136
+ lines.push(...newLines);
137
+ if (lines.length >= numLines)
138
+ break;
139
+ }
140
+ } while (bytesRead > 0 && lines.length < numLines);
141
+ if (buffer && lines.length < numLines) {
142
+ lines.push(buffer);
143
+ }
144
+ const output = lines.slice(0, numLines).join('\n');
145
+ if (output) {
146
+ await writer.write(new TextEncoder().encode(output + '\n'));
147
+ }
148
+ }
149
+ }
150
+ finally {
151
+ kernel.terminal.events.off(TerminalEvents.INTERRUPT, interruptHandler);
152
+ }
153
+ }
154
+ return 0;
155
+ }
156
+ finally {
157
+ writer.releaseLock();
158
+ }
159
+ }
160
+ });
161
+ }
162
+ //# sourceMappingURL=head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"head.js","sourceRoot":"","sources":["../../src/commands/head.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/commands/hex.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;AAG/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqF/F"}
1
+ {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/commands/hex.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;AAG/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA6I/F"}