@ecmaos/coreutils 0.2.0 → 0.3.0

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 (123) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +25 -0
  3. package/LICENSE +1 -1
  4. package/dist/commands/cal.js +2 -2
  5. package/dist/commands/cal.js.map +1 -1
  6. package/dist/commands/cat.js +2 -2
  7. package/dist/commands/cd.js +2 -2
  8. package/dist/commands/chmod.d.ts.map +1 -1
  9. package/dist/commands/chmod.js +16 -11
  10. package/dist/commands/chmod.js.map +1 -1
  11. package/dist/commands/cp.js +2 -2
  12. package/dist/commands/cp.js.map +1 -1
  13. package/dist/commands/date.js +2 -2
  14. package/dist/commands/date.js.map +1 -1
  15. package/dist/commands/echo.js +2 -2
  16. package/dist/commands/echo.js.map +1 -1
  17. package/dist/commands/false.js +2 -2
  18. package/dist/commands/fetch.d.ts +4 -0
  19. package/dist/commands/fetch.d.ts.map +1 -0
  20. package/dist/commands/fetch.js +210 -0
  21. package/dist/commands/fetch.js.map +1 -0
  22. package/dist/commands/format.d.ts +4 -0
  23. package/dist/commands/format.d.ts.map +1 -0
  24. package/dist/commands/format.js +178 -0
  25. package/dist/commands/format.js.map +1 -0
  26. package/dist/commands/hash.d.ts +4 -0
  27. package/dist/commands/hash.d.ts.map +1 -0
  28. package/dist/commands/hash.js +200 -0
  29. package/dist/commands/hash.js.map +1 -0
  30. package/dist/commands/head.js +2 -2
  31. package/dist/commands/id.js +2 -2
  32. package/dist/commands/id.js.map +1 -1
  33. package/dist/commands/less.d.ts.map +1 -1
  34. package/dist/commands/less.js +53 -2
  35. package/dist/commands/less.js.map +1 -1
  36. package/dist/commands/ls.d.ts.map +1 -1
  37. package/dist/commands/ls.js +120 -97
  38. package/dist/commands/ls.js.map +1 -1
  39. package/dist/commands/man.d.ts +4 -0
  40. package/dist/commands/man.d.ts.map +1 -0
  41. package/dist/commands/man.js +554 -0
  42. package/dist/commands/man.js.map +1 -0
  43. package/dist/commands/mkdir.js +2 -2
  44. package/dist/commands/mkdir.js.map +1 -1
  45. package/dist/commands/mktemp.d.ts +4 -0
  46. package/dist/commands/mktemp.d.ts.map +1 -0
  47. package/dist/commands/mktemp.js +229 -0
  48. package/dist/commands/mktemp.js.map +1 -0
  49. package/dist/commands/nc.js +2 -2
  50. package/dist/commands/nc.js.map +1 -1
  51. package/dist/commands/passkey.js +3 -3
  52. package/dist/commands/pwd.js +2 -2
  53. package/dist/commands/pwd.js.map +1 -1
  54. package/dist/commands/rm.d.ts.map +1 -1
  55. package/dist/commands/rm.js +57 -12
  56. package/dist/commands/rm.js.map +1 -1
  57. package/dist/commands/rmdir.js +2 -2
  58. package/dist/commands/rmdir.js.map +1 -1
  59. package/dist/commands/sockets.js +1 -1
  60. package/dist/commands/stat.d.ts.map +1 -1
  61. package/dist/commands/stat.js +37 -15
  62. package/dist/commands/stat.js.map +1 -1
  63. package/dist/commands/tail.js +2 -2
  64. package/dist/commands/tar.d.ts +4 -0
  65. package/dist/commands/tar.d.ts.map +1 -0
  66. package/dist/commands/tar.js +693 -0
  67. package/dist/commands/tar.js.map +1 -0
  68. package/dist/commands/touch.js +2 -2
  69. package/dist/commands/touch.js.map +1 -1
  70. package/dist/commands/true.js +2 -2
  71. package/dist/commands/unzip.d.ts +4 -0
  72. package/dist/commands/unzip.d.ts.map +1 -0
  73. package/dist/commands/unzip.js +443 -0
  74. package/dist/commands/unzip.js.map +1 -0
  75. package/dist/commands/user.d.ts +4 -0
  76. package/dist/commands/user.d.ts.map +1 -0
  77. package/dist/commands/user.js +427 -0
  78. package/dist/commands/user.js.map +1 -0
  79. package/dist/commands/whoami.js +2 -2
  80. package/dist/commands/whoami.js.map +1 -1
  81. package/dist/commands/zip.d.ts +4 -0
  82. package/dist/commands/zip.d.ts.map +1 -0
  83. package/dist/commands/zip.js +264 -0
  84. package/dist/commands/zip.js.map +1 -0
  85. package/dist/index.d.ts +9 -0
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +28 -1
  88. package/dist/index.js.map +1 -1
  89. package/package.json +6 -4
  90. package/src/commands/cal.ts +2 -2
  91. package/src/commands/cat.ts +2 -2
  92. package/src/commands/cd.ts +2 -2
  93. package/src/commands/chmod.ts +19 -11
  94. package/src/commands/cp.ts +2 -2
  95. package/src/commands/date.ts +2 -2
  96. package/src/commands/echo.ts +2 -2
  97. package/src/commands/false.ts +2 -2
  98. package/src/commands/fetch.ts +205 -0
  99. package/src/commands/format.ts +204 -0
  100. package/src/commands/hash.ts +215 -0
  101. package/src/commands/head.ts +2 -2
  102. package/src/commands/id.ts +2 -2
  103. package/src/commands/less.ts +50 -2
  104. package/src/commands/ls.ts +131 -91
  105. package/src/commands/man.ts +643 -0
  106. package/src/commands/mkdir.ts +2 -2
  107. package/src/commands/mktemp.ts +235 -0
  108. package/src/commands/nc.ts +2 -2
  109. package/src/commands/passkey.ts +3 -3
  110. package/src/commands/pwd.ts +2 -2
  111. package/src/commands/rm.ts +54 -12
  112. package/src/commands/rmdir.ts +2 -2
  113. package/src/commands/sockets.ts +1 -1
  114. package/src/commands/stat.ts +44 -16
  115. package/src/commands/tail.ts +2 -2
  116. package/src/commands/tar.ts +737 -0
  117. package/src/commands/touch.ts +2 -2
  118. package/src/commands/true.ts +2 -2
  119. package/src/commands/unzip.ts +517 -0
  120. package/src/commands/user.ts +436 -0
  121. package/src/commands/whoami.ts +2 -2
  122. package/src/commands/zip.ts +319 -0
  123. package/src/index.ts +28 -1
@@ -0,0 +1,178 @@
1
+ import chalk from 'chalk';
2
+ import { TerminalCommand } from '../shared/terminal-command.js';
3
+ import { writelnStdout, writelnStderr } from '../shared/helpers.js';
4
+ function printUsage(process, terminal) {
5
+ const usage = `Usage: format [OPTION]...
6
+ Delete all IndexedDB and localStorage data.
7
+
8
+ -i, --indexeddb Delete only IndexedDB databases
9
+ -l, --localstorage Delete only localStorage
10
+ -k, --keep <name> Preserve specific IndexedDB database(s) (can be used multiple times)
11
+ --help Display this help and exit
12
+
13
+ By default, deletes all IndexedDB databases and localStorage.
14
+ Requires root privileges and interactive confirmation.`;
15
+ writelnStderr(process, terminal, usage);
16
+ }
17
+ async function emptyIndexedDBDatabases(keepDatabases, _kernel, process, terminal) {
18
+ try {
19
+ if (!globalThis.indexedDB) {
20
+ await writelnStderr(process, terminal, chalk.yellow('format: IndexedDB is not available'));
21
+ return false;
22
+ }
23
+ await writelnStdout(process, terminal, chalk.yellow('format: Emptying filesystem...'));
24
+ let databases = [];
25
+ if (typeof indexedDB.databases === 'function') {
26
+ const dbList = await indexedDB.databases();
27
+ databases = dbList
28
+ .filter((db) => typeof db.name === 'string')
29
+ .map(db => ({ name: db.name, version: db.version }));
30
+ }
31
+ else {
32
+ await writelnStdout(process, terminal, chalk.yellow('format: indexedDB.databases() not supported, assuming filesystem will be emptied on reboot'));
33
+ return true;
34
+ }
35
+ const databasesToEmpty = databases.filter(db => !keepDatabases.includes(db.name));
36
+ if (databasesToEmpty.length === 0) {
37
+ await writelnStdout(process, terminal, chalk.green('format: All databases are preserved, nothing to empty'));
38
+ return true;
39
+ }
40
+ if (keepDatabases.length > 0) {
41
+ const preserved = databases.filter(db => keepDatabases.includes(db.name));
42
+ if (preserved.length > 0) {
43
+ await writelnStdout(process, terminal, chalk.cyan(`format: Preserving databases: ${preserved.map(db => db.name).join(', ')}`));
44
+ }
45
+ }
46
+ await writelnStdout(process, terminal, chalk.green(`format: Will empty ${databasesToEmpty.length} IndexedDB database(s) on reboot`));
47
+ return true;
48
+ }
49
+ catch (error) {
50
+ const errorMessage = error instanceof Error ? error.message : String(error);
51
+ await writelnStderr(process, terminal, chalk.red(`format: Error preparing IndexedDB databases: ${errorMessage}`));
52
+ return false;
53
+ }
54
+ }
55
+ async function deleteLocalStorage(process, terminal, storage) {
56
+ try {
57
+ const keysCount = storage.length;
58
+ if (keysCount === 0) {
59
+ await writelnStdout(process, terminal, chalk.green('format: localStorage is already empty'));
60
+ return true;
61
+ }
62
+ storage.clear();
63
+ await writelnStdout(process, terminal, chalk.green(`format: Successfully cleared localStorage (${keysCount} item(s))`));
64
+ return true;
65
+ }
66
+ catch (error) {
67
+ const errorMessage = error instanceof Error ? error.message : String(error);
68
+ await writelnStderr(process, terminal, chalk.red(`format: Error clearing localStorage: ${errorMessage}`));
69
+ return false;
70
+ }
71
+ }
72
+ export function createCommand(kernel, shell, terminal) {
73
+ return new TerminalCommand({
74
+ command: 'format',
75
+ description: 'Delete all IndexedDB and localStorage data',
76
+ kernel,
77
+ shell,
78
+ terminal,
79
+ run: async (pid, argv) => {
80
+ const process = kernel.processes.get(pid);
81
+ if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
82
+ printUsage(process, terminal);
83
+ return 0;
84
+ }
85
+ if (shell.credentials.suid !== 0) {
86
+ await writelnStderr(process, terminal, chalk.red('format: permission denied (requires root)'));
87
+ return 1;
88
+ }
89
+ let onlyIndexedDB = false;
90
+ let onlyLocalStorage = false;
91
+ const keepDatabases = [];
92
+ for (let i = 0; i < argv.length; i++) {
93
+ const arg = argv[i];
94
+ if (!arg || typeof arg !== 'string')
95
+ continue;
96
+ if (arg === '-i' || arg === '--indexeddb') {
97
+ onlyIndexedDB = true;
98
+ }
99
+ else if (arg === '-l' || arg === '--localstorage') {
100
+ onlyLocalStorage = true;
101
+ }
102
+ else if (arg === '-k' || arg === '--keep') {
103
+ if (i + 1 < argv.length) {
104
+ const dbName = argv[++i];
105
+ if (dbName && !dbName.startsWith('-')) {
106
+ keepDatabases.push(dbName);
107
+ }
108
+ else {
109
+ await writelnStderr(process, terminal, chalk.red('format: --keep requires a database name'));
110
+ return 1;
111
+ }
112
+ }
113
+ else {
114
+ await writelnStderr(process, terminal, chalk.red('format: --keep requires a database name'));
115
+ return 1;
116
+ }
117
+ }
118
+ else if (arg.startsWith('-')) {
119
+ await writelnStderr(process, terminal, chalk.red(`format: invalid option -- '${arg.replace(/^-+/, '')}'`));
120
+ await writelnStdout(process, terminal, "Try 'format --help' for more information.");
121
+ return 1;
122
+ }
123
+ }
124
+ if (onlyIndexedDB && onlyLocalStorage) {
125
+ await writelnStderr(process, terminal, chalk.red('format: cannot specify both --indexeddb and --localstorage'));
126
+ return 1;
127
+ }
128
+ const deleteIndexedDB = !onlyLocalStorage;
129
+ const deleteLocal = !onlyIndexedDB;
130
+ let actionDescription = 'This will delete ';
131
+ if (deleteIndexedDB && deleteLocal) {
132
+ actionDescription += 'ALL IndexedDB databases and localStorage data';
133
+ }
134
+ else if (deleteIndexedDB) {
135
+ actionDescription += 'ALL IndexedDB databases';
136
+ }
137
+ else {
138
+ actionDescription += 'ALL localStorage data';
139
+ }
140
+ if (keepDatabases.length > 0) {
141
+ actionDescription += ` (preserving: ${keepDatabases.join(', ')})`;
142
+ }
143
+ actionDescription += '. This action cannot be undone!';
144
+ await writelnStderr(process, terminal, chalk.red.bold(`⚠️ WARNING: ${actionDescription}`));
145
+ await writelnStdout(process, terminal, chalk.yellow('Type "yes" to continue, or anything else to cancel: '));
146
+ const confirmation = await terminal.readline();
147
+ if (confirmation.trim().toLowerCase() !== 'yes') {
148
+ await writelnStdout(process, terminal, chalk.yellow('format: Operation cancelled'));
149
+ return 0;
150
+ }
151
+ if (kernel.storage.db) {
152
+ kernel.storage.db.close();
153
+ }
154
+ let success = true;
155
+ if (deleteIndexedDB) {
156
+ const indexedDBSuccess = await emptyIndexedDBDatabases(keepDatabases, kernel, process, terminal);
157
+ success = success && indexedDBSuccess;
158
+ }
159
+ if (deleteLocal) {
160
+ const localStorageSuccess = await deleteLocalStorage(process, terminal, kernel.storage.local);
161
+ success = success && localStorageSuccess;
162
+ }
163
+ if (success) {
164
+ await writelnStdout(process, terminal, chalk.green.bold('format: Format operation completed successfully'));
165
+ await writelnStdout(process, terminal, chalk.yellow('format: Rebooting system to complete format...'));
166
+ setTimeout(() => {
167
+ kernel.reboot();
168
+ }, 500);
169
+ return 0;
170
+ }
171
+ else {
172
+ await writelnStderr(process, terminal, chalk.red.bold('format: Format operation completed with errors'));
173
+ return 1;
174
+ }
175
+ }
176
+ });
177
+ }
178
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/commands/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEnE,SAAS,UAAU,CAAC,OAA4B,EAAE,QAAkB;IAClE,MAAM,KAAK,GAAG;;;;;;;;;uDASuC,CAAA;IACrD,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,aAAuB,EACvB,OAAe,EACf,OAA4B,EAC5B,QAAkB;IAElB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAA;YAC1F,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAA;QAEtF,IAAI,SAAS,GAA6C,EAAE,CAAA;QAE5D,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAA;YAC1C,SAAS,GAAG,MAAM;iBACf,MAAM,CAAC,CAAC,EAAE,EAA2C,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;iBACpF,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,4FAA4F,CAAC,CAAC,CAAA;YAClJ,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAA;YAC5G,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YACzE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,iCAAiC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YAChI,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,sBAAsB,gBAAgB,CAAC,MAAM,kCAAkC,CAAC,CAAC,CAAA;QACpI,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,gDAAgD,YAAY,EAAE,CAAC,CAAC,CAAA;QACjH,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAA4B,EAC5B,QAAkB,EAClB,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAA;QAChC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAA;YAC5F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,8CAA8C,SAAS,WAAW,CAAC,CAAC,CAAA;QACvH,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC,CAAA;QACzG,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAY,EAAE,QAAkB;IAC5E,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,4CAA4C;QACzD,MAAM;QACN,KAAK;QACL,QAAQ;QACR,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,IAAc,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAwB,CAAA;YAEhE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBAClE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAC7B,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAA;gBAC9F,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,aAAa,GAAG,KAAK,CAAA;YACzB,IAAI,gBAAgB,GAAG,KAAK,CAAA;YAC5B,MAAM,aAAa,GAAa,EAAE,CAAA;YAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,SAAQ;gBAE7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;oBAC1C,aAAa,GAAG,IAAI,CAAA;gBACtB,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;oBACpD,gBAAgB,GAAG,IAAI,CAAA;gBACzB,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;wBACxB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;4BACtC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBAC5B,CAAC;6BAAM,CAAC;4BACN,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;4BAC5F,OAAO,CAAC,CAAA;wBACV,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAA;wBAC5F,OAAO,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC1G,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,2CAA2C,CAAC,CAAA;oBACnF,OAAO,CAAC,CAAA;gBACV,CAAC;YACH,CAAC;YAED,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAC;gBACtC,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAA;gBAC/G,OAAO,CAAC,CAAA;YACV,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,gBAAgB,CAAA;YACzC,MAAM,WAAW,GAAG,CAAC,aAAa,CAAA;YAElC,IAAI,iBAAiB,GAAG,mBAAmB,CAAA;YAC3C,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;gBACnC,iBAAiB,IAAI,+CAA+C,CAAA;YACtE,CAAC;iBAAM,IAAI,eAAe,EAAE,CAAC;gBAC3B,iBAAiB,IAAI,yBAAyB,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,iBAAiB,IAAI,uBAAuB,CAAA;YAC9C,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,IAAI,iBAAiB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACnE,CAAC;YAED,iBAAiB,IAAI,iCAAiC,CAAA;YAEtD,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,EAAE,CAAC,CAAC,CAAA;YAC3F,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAA;YAE5G,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;YAC9C,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;gBAChD,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAA;gBACnF,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAC3B,CAAC;YAED,IAAI,OAAO,GAAG,IAAI,CAAA;YAElB,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAChG,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAAA;YACvC,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC7F,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAAA;YAC1C,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAA;gBAC3G,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAA;gBACtG,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,CAAC,MAAM,EAAE,CAAA;gBACjB,CAAC,EAAE,GAAG,CAAC,CAAA;gBACP,OAAO,CAAC,CAAA;YACV,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAA;gBACxG,OAAO,CAAC,CAAA;YACV,CAAC;QACH,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=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/commands/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAyE/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA0I/F"}
@@ -0,0 +1,200 @@
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
+ const SUPPORTED_ALGORITHMS = {
6
+ 'sha1': 'SHA-1',
7
+ 'sha-1': 'SHA-1',
8
+ 'sha256': 'SHA-256',
9
+ 'sha-256': 'SHA-256',
10
+ 'sha384': 'SHA-384',
11
+ 'sha-384': 'SHA-384',
12
+ 'sha512': 'SHA-512',
13
+ 'sha-512': 'SHA-512'
14
+ };
15
+ function printUsage(process, terminal) {
16
+ const usage = `Usage: hash [OPTION]... [FILE]...
17
+ Compute and display hash values for files or standard input.
18
+
19
+ -a, --algorithm=ALGORITHM hash algorithm to use (sha1, sha256, sha384, sha512)
20
+ default: sha256
21
+ --help display this help and exit
22
+
23
+ Supported algorithms:
24
+ sha1, sha-1 SHA-1 (160 bits)
25
+ sha256, sha-256 SHA-256 (256 bits) [default]
26
+ sha384, sha-384 SHA-384 (384 bits)
27
+ sha512, sha-512 SHA-512 (512 bits)
28
+
29
+ Examples:
30
+ hash file.txt compute SHA-256 hash of file.txt
31
+ hash -a sha512 file.txt compute SHA-512 hash of file.txt
32
+ echo "hello" | hash compute SHA-256 hash of stdin`;
33
+ writelnStderr(process, terminal, usage);
34
+ }
35
+ async function hashData(data, algorithm) {
36
+ // Create a new Uint8Array with a proper ArrayBuffer to ensure compatibility
37
+ const dataCopy = new Uint8Array(data);
38
+ const hashBuffer = await crypto.subtle.digest(algorithm, dataCopy);
39
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
40
+ return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
41
+ }
42
+ async function readStreamToUint8Array(reader) {
43
+ const chunks = [];
44
+ try {
45
+ while (true) {
46
+ const { done, value } = await reader.read();
47
+ if (done)
48
+ break;
49
+ if (value) {
50
+ chunks.push(value);
51
+ }
52
+ }
53
+ }
54
+ finally {
55
+ reader.releaseLock();
56
+ }
57
+ // Calculate total length
58
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
59
+ // Concatenate all chunks into a single Uint8Array
60
+ const result = new Uint8Array(totalLength);
61
+ let offset = 0;
62
+ for (const chunk of chunks) {
63
+ result.set(chunk, offset);
64
+ offset += chunk.length;
65
+ }
66
+ return result;
67
+ }
68
+ export function createCommand(kernel, shell, terminal) {
69
+ return new TerminalCommand({
70
+ command: 'hash',
71
+ description: 'Compute and display hash values for files or standard input',
72
+ kernel,
73
+ shell,
74
+ terminal,
75
+ run: async (pid, argv) => {
76
+ const process = kernel.processes.get(pid);
77
+ if (!process)
78
+ return 1;
79
+ if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
80
+ printUsage(process, terminal);
81
+ return 0;
82
+ }
83
+ let algorithm = 'SHA-256';
84
+ const files = [];
85
+ // Parse arguments
86
+ for (let i = 0; i < argv.length; i++) {
87
+ const arg = argv[i];
88
+ if (arg === undefined)
89
+ continue;
90
+ if (arg === '--help' || arg === '-h') {
91
+ printUsage(process, terminal);
92
+ return 0;
93
+ }
94
+ else if (arg === '-a' || arg === '--algorithm') {
95
+ const algoArg = argv[i + 1];
96
+ if (!algoArg) {
97
+ await writelnStderr(process, terminal, `hash: option requires an argument -- '${arg === '-a' ? 'a' : 'algorithm'}'`);
98
+ return 1;
99
+ }
100
+ const algoLower = algoArg.toLowerCase();
101
+ const selectedAlgorithm = SUPPORTED_ALGORITHMS[algoLower];
102
+ if (!selectedAlgorithm) {
103
+ await writelnStderr(process, terminal, `hash: unsupported algorithm '${algoArg}'\nSupported algorithms: ${Object.keys(SUPPORTED_ALGORITHMS).join(', ')}`);
104
+ return 1;
105
+ }
106
+ algorithm = selectedAlgorithm;
107
+ i++; // Skip the next argument as it's the algorithm value
108
+ }
109
+ else if (arg.startsWith('--algorithm=')) {
110
+ const algoArg = arg.split('=')[1];
111
+ if (!algoArg) {
112
+ await writelnStderr(process, terminal, `hash: option requires an argument -- 'algorithm'`);
113
+ return 1;
114
+ }
115
+ const algoLower = algoArg.toLowerCase();
116
+ const selectedAlgorithm = SUPPORTED_ALGORITHMS[algoLower];
117
+ if (!selectedAlgorithm) {
118
+ await writelnStderr(process, terminal, `hash: unsupported algorithm '${algoArg}'\nSupported algorithms: ${Object.keys(SUPPORTED_ALGORITHMS).join(', ')}`);
119
+ return 1;
120
+ }
121
+ algorithm = selectedAlgorithm;
122
+ }
123
+ else if (!arg.startsWith('-')) {
124
+ files.push(arg);
125
+ }
126
+ else {
127
+ await writelnStderr(process, terminal, `hash: invalid option -- '${arg.replace(/^-+/, '')}'`);
128
+ await writelnStderr(process, terminal, `Try 'hash --help' for more information.`);
129
+ return 1;
130
+ }
131
+ }
132
+ const writer = process.stdout.getWriter();
133
+ try {
134
+ // If no files specified, read from stdin
135
+ if (files.length === 0) {
136
+ if (!process.stdin) {
137
+ await writelnStderr(process, terminal, 'hash: no input specified');
138
+ return 1;
139
+ }
140
+ const reader = process.stdin.getReader();
141
+ const data = await readStreamToUint8Array(reader);
142
+ const hash = await hashData(data, algorithm);
143
+ await writer.write(new TextEncoder().encode(hash + '\n'));
144
+ return 0;
145
+ }
146
+ // Process each file
147
+ let hasError = false;
148
+ for (const file of files) {
149
+ const fullPath = path.resolve(shell.cwd, file);
150
+ let interrupted = false;
151
+ const interruptHandler = () => { interrupted = true; };
152
+ kernel.terminal.events.on(TerminalEvents.INTERRUPT, interruptHandler);
153
+ try {
154
+ if (fullPath.startsWith('/dev')) {
155
+ await writelnStderr(process, terminal, `hash: ${file}: cannot hash device files`);
156
+ hasError = true;
157
+ continue;
158
+ }
159
+ const handle = await shell.context.fs.promises.open(fullPath, 'r');
160
+ const stat = await shell.context.fs.promises.stat(fullPath);
161
+ const chunks = [];
162
+ let bytesRead = 0;
163
+ const chunkSize = 64 * 1024; // 64KB chunks for better performance
164
+ while (bytesRead < stat.size) {
165
+ if (interrupted)
166
+ break;
167
+ const data = new Uint8Array(chunkSize);
168
+ const readSize = Math.min(chunkSize, stat.size - bytesRead);
169
+ await handle.read(data, 0, readSize, bytesRead);
170
+ chunks.push(data.subarray(0, readSize));
171
+ bytesRead += readSize;
172
+ }
173
+ // Concatenate all chunks
174
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
175
+ const fileData = new Uint8Array(totalLength);
176
+ let offset = 0;
177
+ for (const chunk of chunks) {
178
+ fileData.set(chunk, offset);
179
+ offset += chunk.length;
180
+ }
181
+ const hash = await hashData(fileData, algorithm);
182
+ await writer.write(new TextEncoder().encode(`${hash} ${file}\n`));
183
+ }
184
+ catch (error) {
185
+ await writelnStderr(process, terminal, `hash: ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
186
+ hasError = true;
187
+ }
188
+ finally {
189
+ kernel.terminal.events.off(TerminalEvents.INTERRUPT, interruptHandler);
190
+ }
191
+ }
192
+ return hasError ? 1 : 0;
193
+ }
194
+ finally {
195
+ writer.releaseLock();
196
+ }
197
+ }
198
+ });
199
+ }
200
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/commands/hash.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import path from 'path';
2
2
  import { TerminalEvents } from '@ecmaos/types';
3
3
  import { TerminalCommand } from '../shared/terminal-command.js';
4
- import { writelnStdout } from '../shared/helpers.js';
4
+ import { writelnStderr } from '../shared/helpers.js';
5
5
  function printUsage(process, terminal) {
6
6
  const usage = `Usage: head [OPTION]... [FILE]...
7
7
  Print the first 10 lines of each FILE to standard output.
8
8
 
9
9
  -n, -nNUMBER print the first NUMBER lines instead of 10
10
10
  --help display this help and exit`;
11
- writelnStdout(process, terminal, usage);
11
+ writelnStderr(process, terminal, usage);
12
12
  }
13
13
  export function createCommand(kernel, shell, terminal) {
14
14
  return new TerminalCommand({
@@ -1,5 +1,5 @@
1
1
  import { TerminalCommand } from '../shared/terminal-command.js';
2
- import { writelnStdout } from '../shared/helpers.js';
2
+ import { writelnStdout, writelnStderr } from '../shared/helpers.js';
3
3
  function printUsage(process, terminal) {
4
4
  const usage = `Usage: id [OPTION]...
5
5
  Print user and group IDs.
@@ -9,7 +9,7 @@ Print user and group IDs.
9
9
  -G, --groups print all group IDs
10
10
  -n, --name print names instead of numeric IDs
11
11
  --help display this help and exit`;
12
- writelnStdout(process, terminal, usage);
12
+ writelnStderr(process, terminal, usage);
13
13
  }
14
14
  export function createCommand(kernel, shell, terminal) {
15
15
  return new TerminalCommand({
@@ -1 +1 @@
1
- {"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/commands/id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/commands/id.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"less.d.ts","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAY/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA2L/F"}
1
+ {"version":3,"file":"less.d.ts","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAY/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA2O/F"}
@@ -27,6 +27,7 @@ export function createCommand(kernel, shell, terminal) {
27
27
  }
28
28
  let lines = [];
29
29
  let currentLine = 0;
30
+ let horizontalOffset = 0;
30
31
  let keyListener = null;
31
32
  let linesRendered = 0;
32
33
  try {
@@ -79,6 +80,42 @@ export function createCommand(kernel, shell, terminal) {
79
80
  const rows = terminal.rows;
80
81
  const displayRows = rows - 1;
81
82
  const render = () => {
83
+ const cols = terminal.cols;
84
+ const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, '');
85
+ const getVisibleSlice = (line, offset) => {
86
+ const visibleLen = stripAnsi(line).length;
87
+ if (offset < 0)
88
+ offset = 0;
89
+ if (offset > visibleLen)
90
+ offset = visibleLen;
91
+ let visible = 0;
92
+ let result = '';
93
+ let inEscape = false;
94
+ let charsSkipped = 0;
95
+ for (const char of line) {
96
+ if (char === '\x1b')
97
+ inEscape = true;
98
+ if (inEscape) {
99
+ if (charsSkipped >= offset) {
100
+ result += char;
101
+ }
102
+ if (/[a-zA-Z]/.test(char))
103
+ inEscape = false;
104
+ }
105
+ else {
106
+ if (charsSkipped < offset) {
107
+ charsSkipped++;
108
+ }
109
+ else {
110
+ if (visible >= cols)
111
+ break;
112
+ result += char;
113
+ visible++;
114
+ }
115
+ }
116
+ }
117
+ return result;
118
+ };
82
119
  const maxLine = Math.max(0, lines.length - displayRows);
83
120
  if (currentLine > maxLine) {
84
121
  currentLine = maxLine;
@@ -86,6 +123,12 @@ export function createCommand(kernel, shell, terminal) {
86
123
  if (currentLine < 0) {
87
124
  currentLine = 0;
88
125
  }
126
+ const maxLineLength = Math.max(...lines.map(l => stripAnsi(l).length), 0);
127
+ const maxHorizontalOffset = Math.max(0, maxLineLength - cols);
128
+ if (horizontalOffset > maxHorizontalOffset)
129
+ horizontalOffset = maxHorizontalOffset;
130
+ if (horizontalOffset < 0)
131
+ horizontalOffset = 0;
89
132
  if (linesRendered > 0) {
90
133
  terminal.write(ansi.cursor.up(linesRendered));
91
134
  }
@@ -93,7 +136,7 @@ export function createCommand(kernel, shell, terminal) {
93
136
  linesRendered = 0;
94
137
  for (let i = currentLine; i < endLine; i++) {
95
138
  terminal.write(ansi.erase.inLine(2));
96
- const line = lines[i] || '';
139
+ const line = getVisibleSlice(lines[i] || '', horizontalOffset);
97
140
  terminal.write(line);
98
141
  linesRendered++;
99
142
  if (i < endLine - 1) {
@@ -109,7 +152,7 @@ export function createCommand(kernel, shell, terminal) {
109
152
  const statusLine = `-- ${currentLine + 1}-${endLine} / ${lines.length} (${percentage}%)`;
110
153
  terminal.write('\n');
111
154
  terminal.write(ansi.erase.inLine(2));
112
- terminal.write(statusLine);
155
+ terminal.write(getVisibleSlice(statusLine, 0));
113
156
  linesRendered++;
114
157
  };
115
158
  render();
@@ -140,6 +183,14 @@ export function createCommand(kernel, shell, terminal) {
140
183
  currentLine++;
141
184
  render();
142
185
  break;
186
+ case 'ArrowLeft':
187
+ horizontalOffset = Math.max(0, horizontalOffset - Math.floor(terminal.cols / 2));
188
+ render();
189
+ break;
190
+ case 'ArrowRight':
191
+ horizontalOffset += Math.floor(terminal.cols / 2);
192
+ render();
193
+ break;
143
194
  case 'PageDown':
144
195
  case ' ':
145
196
  currentLine = Math.min(currentLine + displayRows, Math.max(0, lines.length - displayRows));
@@ -1 +1 @@
1
- {"version":3,"file":"less.js","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"less.js","sourceRoot":"","sources":["../../src/commands/less.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAkO/F"}
1
+ {"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAyQ/F"}