@lifo-sh/core 0.1.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.
- package/dist/archive-D220So0m.js +192 -0
- package/dist/args-CG6b9cZt.js +43 -0
- package/dist/awk-rMPdpM91.js +118 -0
- package/dist/basename-C33A_Zse.js +12 -0
- package/dist/bc-BYiKVTNg.js +200 -0
- package/dist/cal-DPULSAhj.js +56 -0
- package/dist/cat-Crmqa4-2.js +29 -0
- package/dist/chmod-CcGyvoCX.js +56 -0
- package/dist/chown-CErsnGQX.js +28 -0
- package/dist/commands/archive/gunzip.d.ts +4 -0
- package/dist/commands/archive/gunzip.d.ts.map +1 -0
- package/dist/commands/archive/gzip.d.ts +4 -0
- package/dist/commands/archive/gzip.d.ts.map +1 -0
- package/dist/commands/archive/tar.d.ts +4 -0
- package/dist/commands/archive/tar.d.ts.map +1 -0
- package/dist/commands/archive/unzip.d.ts +4 -0
- package/dist/commands/archive/unzip.d.ts.map +1 -0
- package/dist/commands/archive/zip.d.ts +4 -0
- package/dist/commands/archive/zip.d.ts.map +1 -0
- package/dist/commands/fs/basename.d.ts +4 -0
- package/dist/commands/fs/basename.d.ts.map +1 -0
- package/dist/commands/fs/cat.d.ts +4 -0
- package/dist/commands/fs/cat.d.ts.map +1 -0
- package/dist/commands/fs/chmod.d.ts +4 -0
- package/dist/commands/fs/chmod.d.ts.map +1 -0
- package/dist/commands/fs/chown.d.ts +4 -0
- package/dist/commands/fs/chown.d.ts.map +1 -0
- package/dist/commands/fs/cp.d.ts +4 -0
- package/dist/commands/fs/cp.d.ts.map +1 -0
- package/dist/commands/fs/df.d.ts +4 -0
- package/dist/commands/fs/df.d.ts.map +1 -0
- package/dist/commands/fs/dirname.d.ts +4 -0
- package/dist/commands/fs/dirname.d.ts.map +1 -0
- package/dist/commands/fs/du.d.ts +4 -0
- package/dist/commands/fs/du.d.ts.map +1 -0
- package/dist/commands/fs/file.d.ts +4 -0
- package/dist/commands/fs/file.d.ts.map +1 -0
- package/dist/commands/fs/find.d.ts +4 -0
- package/dist/commands/fs/find.d.ts.map +1 -0
- package/dist/commands/fs/ln.d.ts +4 -0
- package/dist/commands/fs/ln.d.ts.map +1 -0
- package/dist/commands/fs/ls.d.ts +4 -0
- package/dist/commands/fs/ls.d.ts.map +1 -0
- package/dist/commands/fs/mkdir.d.ts +4 -0
- package/dist/commands/fs/mkdir.d.ts.map +1 -0
- package/dist/commands/fs/mktemp.d.ts +4 -0
- package/dist/commands/fs/mktemp.d.ts.map +1 -0
- package/dist/commands/fs/mv.d.ts +4 -0
- package/dist/commands/fs/mv.d.ts.map +1 -0
- package/dist/commands/fs/realpath.d.ts +4 -0
- package/dist/commands/fs/realpath.d.ts.map +1 -0
- package/dist/commands/fs/rm.d.ts +4 -0
- package/dist/commands/fs/rm.d.ts.map +1 -0
- package/dist/commands/fs/rmdir.d.ts +4 -0
- package/dist/commands/fs/rmdir.d.ts.map +1 -0
- package/dist/commands/fs/stat.d.ts +4 -0
- package/dist/commands/fs/stat.d.ts.map +1 -0
- package/dist/commands/fs/touch.d.ts +4 -0
- package/dist/commands/fs/touch.d.ts.map +1 -0
- package/dist/commands/fs/tree.d.ts +4 -0
- package/dist/commands/fs/tree.d.ts.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/io/printf.d.ts +4 -0
- package/dist/commands/io/printf.d.ts.map +1 -0
- package/dist/commands/io/tee.d.ts +4 -0
- package/dist/commands/io/tee.d.ts.map +1 -0
- package/dist/commands/io/xargs.d.ts +4 -0
- package/dist/commands/io/xargs.d.ts.map +1 -0
- package/dist/commands/io/yes.d.ts +4 -0
- package/dist/commands/io/yes.d.ts.map +1 -0
- package/dist/commands/net/curl.d.ts +6 -0
- package/dist/commands/net/curl.d.ts.map +1 -0
- package/dist/commands/net/dig.d.ts +4 -0
- package/dist/commands/net/dig.d.ts.map +1 -0
- package/dist/commands/net/ping.d.ts +4 -0
- package/dist/commands/net/ping.d.ts.map +1 -0
- package/dist/commands/net/wget.d.ts +4 -0
- package/dist/commands/net/wget.d.ts.map +1 -0
- package/dist/commands/registry.d.ts +13 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/system/bc.d.ts +4 -0
- package/dist/commands/system/bc.d.ts.map +1 -0
- package/dist/commands/system/cal.d.ts +4 -0
- package/dist/commands/system/cal.d.ts.map +1 -0
- package/dist/commands/system/date.d.ts +4 -0
- package/dist/commands/system/date.d.ts.map +1 -0
- package/dist/commands/system/env.d.ts +4 -0
- package/dist/commands/system/env.d.ts.map +1 -0
- package/dist/commands/system/free.d.ts +4 -0
- package/dist/commands/system/free.d.ts.map +1 -0
- package/dist/commands/system/help.d.ts +4 -0
- package/dist/commands/system/help.d.ts.map +1 -0
- package/dist/commands/system/hostname.d.ts +4 -0
- package/dist/commands/system/hostname.d.ts.map +1 -0
- package/dist/commands/system/kill.d.ts +4 -0
- package/dist/commands/system/kill.d.ts.map +1 -0
- package/dist/commands/system/man.d.ts +4 -0
- package/dist/commands/system/man.d.ts.map +1 -0
- package/dist/commands/system/node.d.ts +6 -0
- package/dist/commands/system/node.d.ts.map +1 -0
- package/dist/commands/system/pkg.d.ts +4 -0
- package/dist/commands/system/pkg.d.ts.map +1 -0
- package/dist/commands/system/ps.d.ts +4 -0
- package/dist/commands/system/ps.d.ts.map +1 -0
- package/dist/commands/system/sleep.d.ts +4 -0
- package/dist/commands/system/sleep.d.ts.map +1 -0
- package/dist/commands/system/top.d.ts +4 -0
- package/dist/commands/system/top.d.ts.map +1 -0
- package/dist/commands/system/uname.d.ts +4 -0
- package/dist/commands/system/uname.d.ts.map +1 -0
- package/dist/commands/system/uptime.d.ts +4 -0
- package/dist/commands/system/uptime.d.ts.map +1 -0
- package/dist/commands/system/watch.d.ts +4 -0
- package/dist/commands/system/watch.d.ts.map +1 -0
- package/dist/commands/system/which.d.ts +4 -0
- package/dist/commands/system/which.d.ts.map +1 -0
- package/dist/commands/system/whoami.d.ts +4 -0
- package/dist/commands/system/whoami.d.ts.map +1 -0
- package/dist/commands/text/awk.d.ts +4 -0
- package/dist/commands/text/awk.d.ts.map +1 -0
- package/dist/commands/text/cut.d.ts +4 -0
- package/dist/commands/text/cut.d.ts.map +1 -0
- package/dist/commands/text/diff.d.ts +4 -0
- package/dist/commands/text/diff.d.ts.map +1 -0
- package/dist/commands/text/grep.d.ts +4 -0
- package/dist/commands/text/grep.d.ts.map +1 -0
- package/dist/commands/text/head.d.ts +4 -0
- package/dist/commands/text/head.d.ts.map +1 -0
- package/dist/commands/text/nl.d.ts +4 -0
- package/dist/commands/text/nl.d.ts.map +1 -0
- package/dist/commands/text/rev.d.ts +4 -0
- package/dist/commands/text/rev.d.ts.map +1 -0
- package/dist/commands/text/sed.d.ts +4 -0
- package/dist/commands/text/sed.d.ts.map +1 -0
- package/dist/commands/text/sort.d.ts +4 -0
- package/dist/commands/text/sort.d.ts.map +1 -0
- package/dist/commands/text/tail.d.ts +4 -0
- package/dist/commands/text/tail.d.ts.map +1 -0
- package/dist/commands/text/tr.d.ts +4 -0
- package/dist/commands/text/tr.d.ts.map +1 -0
- package/dist/commands/text/uniq.d.ts +4 -0
- package/dist/commands/text/uniq.d.ts.map +1 -0
- package/dist/commands/text/wc.d.ts +4 -0
- package/dist/commands/text/wc.d.ts.map +1 -0
- package/dist/commands/types.d.ts +20 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/cp-CpjwiLUF.js +19 -0
- package/dist/cut-GfN8py4j.js +60 -0
- package/dist/date-C8NB8v8G.js +86 -0
- package/dist/df-CeZb4WOr.js +34 -0
- package/dist/diff-2wbVWmCT.js +129 -0
- package/dist/dig-BEJ8Ky96.js +69 -0
- package/dist/dirname-C5L53RA2.js +13 -0
- package/dist/du-B0shJpEL.js +77 -0
- package/dist/env-DXzvDKsN.js +9 -0
- package/dist/file-C2epVYvH.js +70 -0
- package/dist/find-DA-rpvsC.js +36 -0
- package/dist/free-DAxE4b2U.js +23 -0
- package/dist/grep-Bynq2w2E.js +140 -0
- package/dist/gunzip-B9b1Vph1.js +48 -0
- package/dist/gzip-CkXnPp5J.js +58 -0
- package/dist/head-DZJVLF1k.js +48 -0
- package/dist/hostname-BxU2S3nT.js +8 -0
- package/dist/index-Be1wosKt.js +6028 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/kernel/index.d.ts +25 -0
- package/dist/kernel/index.d.ts.map +1 -0
- package/dist/kernel/persistence/PersistenceManager.d.ts +10 -0
- package/dist/kernel/persistence/PersistenceManager.d.ts.map +1 -0
- package/dist/kernel/persistence/serializer.d.ts +13 -0
- package/dist/kernel/persistence/serializer.d.ts.map +1 -0
- package/dist/kernel/samples.d.ts +3 -0
- package/dist/kernel/samples.d.ts.map +1 -0
- package/dist/kernel/vfs/VFS.d.ts +36 -0
- package/dist/kernel/vfs/VFS.d.ts.map +1 -0
- package/dist/kernel/vfs/index.d.ts +4 -0
- package/dist/kernel/vfs/index.d.ts.map +1 -0
- package/dist/kernel/vfs/providers/DevProvider.d.ts +11 -0
- package/dist/kernel/vfs/providers/DevProvider.d.ts.map +1 -0
- package/dist/kernel/vfs/providers/ProcProvider.d.ts +14 -0
- package/dist/kernel/vfs/providers/ProcProvider.d.ts.map +1 -0
- package/dist/kernel/vfs/types.d.ts +43 -0
- package/dist/kernel/vfs/types.d.ts.map +1 -0
- package/dist/ln-Bf3f3jVA.js +11 -0
- package/dist/ls-CSeazevv.js +106 -0
- package/dist/man-CJ5pI0_W.js +122 -0
- package/dist/mkdir-B7p8krsP.js +27 -0
- package/dist/mktemp-88Nhvd7h.js +31 -0
- package/dist/mv-DRVvz9oK.js +19 -0
- package/dist/nl-G2vK3rR3.js +48 -0
- package/dist/node-compat/buffer.d.ts +17 -0
- package/dist/node-compat/buffer.d.ts.map +1 -0
- package/dist/node-compat/child_process.d.ts +10 -0
- package/dist/node-compat/child_process.d.ts.map +1 -0
- package/dist/node-compat/console.d.ts +21 -0
- package/dist/node-compat/console.d.ts.map +1 -0
- package/dist/node-compat/crypto.d.ts +17 -0
- package/dist/node-compat/crypto.d.ts.map +1 -0
- package/dist/node-compat/events.d.ts +19 -0
- package/dist/node-compat/events.d.ts.map +1 -0
- package/dist/node-compat/fs.d.ts +113 -0
- package/dist/node-compat/fs.d.ts.map +1 -0
- package/dist/node-compat/http.d.ts +87 -0
- package/dist/node-compat/http.d.ts.map +1 -0
- package/dist/node-compat/index.d.ts +19 -0
- package/dist/node-compat/index.d.ts.map +1 -0
- package/dist/node-compat/os.d.ts +39 -0
- package/dist/node-compat/os.d.ts.map +1 -0
- package/dist/node-compat/path.d.ts +58 -0
- package/dist/node-compat/path.d.ts.map +1 -0
- package/dist/node-compat/process.d.ts +62 -0
- package/dist/node-compat/process.d.ts.map +1 -0
- package/dist/node-compat/stream.d.ts +36 -0
- package/dist/node-compat/stream.d.ts.map +1 -0
- package/dist/node-compat/timers.d.ts +16 -0
- package/dist/node-compat/timers.d.ts.map +1 -0
- package/dist/node-compat/url.d.ts +53 -0
- package/dist/node-compat/url.d.ts.map +1 -0
- package/dist/node-compat/util.d.ts +27 -0
- package/dist/node-compat/util.d.ts.map +1 -0
- package/dist/ping-DtVEwwda.js +50 -0
- package/dist/pkg/PackageManager.d.ts +19 -0
- package/dist/pkg/PackageManager.d.ts.map +1 -0
- package/dist/pkg/loader.d.ts +4 -0
- package/dist/pkg/loader.d.ts.map +1 -0
- package/dist/printf-Cc2o7KZx.js +70 -0
- package/dist/realpath-C-kisl-F.js +24 -0
- package/dist/rev-9puwegeh.js +34 -0
- package/dist/rm-BXSq9iqP.js +37 -0
- package/dist/rmdir-CWgZ6q8D.js +35 -0
- package/dist/sandbox/HeadlessTerminal.d.ts +17 -0
- package/dist/sandbox/HeadlessTerminal.d.ts.map +1 -0
- package/dist/sandbox/Sandbox.d.ts +36 -0
- package/dist/sandbox/Sandbox.d.ts.map +1 -0
- package/dist/sandbox/SandboxCommands.d.ts +18 -0
- package/dist/sandbox/SandboxCommands.d.ts.map +1 -0
- package/dist/sandbox/SandboxFs.d.ts +38 -0
- package/dist/sandbox/SandboxFs.d.ts.map +1 -0
- package/dist/sandbox/index.d.ts +3 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/types.d.ts +72 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sed-BRxd2DlZ.js +90 -0
- package/dist/shell/Shell.d.ts +84 -0
- package/dist/shell/Shell.d.ts.map +1 -0
- package/dist/shell/completer.d.ts +19 -0
- package/dist/shell/completer.d.ts.map +1 -0
- package/dist/shell/expander.d.ts +20 -0
- package/dist/shell/expander.d.ts.map +1 -0
- package/dist/shell/history.d.ts +22 -0
- package/dist/shell/history.d.ts.map +1 -0
- package/dist/shell/interpreter.d.ts +67 -0
- package/dist/shell/interpreter.d.ts.map +1 -0
- package/dist/shell/jobs.d.ts +21 -0
- package/dist/shell/jobs.d.ts.map +1 -0
- package/dist/shell/lexer.d.ts +3 -0
- package/dist/shell/lexer.d.ts.map +1 -0
- package/dist/shell/parser.d.ts +7 -0
- package/dist/shell/parser.d.ts.map +1 -0
- package/dist/shell/pipe.d.ts +12 -0
- package/dist/shell/pipe.d.ts.map +1 -0
- package/dist/shell/terminal-stdin.d.ts +22 -0
- package/dist/shell/terminal-stdin.d.ts.map +1 -0
- package/dist/shell/test-builtin.d.ts +8 -0
- package/dist/shell/test-builtin.d.ts.map +1 -0
- package/dist/shell/types.d.ts +109 -0
- package/dist/shell/types.d.ts.map +1 -0
- package/dist/sleep-B4C3fZiR.js +19 -0
- package/dist/sort-B7K83hAD.js +59 -0
- package/dist/stat-C0qs7xMV.js +29 -0
- package/dist/tail-CYBTYnn3.js +47 -0
- package/dist/tar-mMS7gfb-.js +121 -0
- package/dist/tee-B8bXFHbI.js +17 -0
- package/dist/terminal/Terminal.d.ts +13 -0
- package/dist/terminal/Terminal.d.ts.map +1 -0
- package/dist/touch-CdAHKfLv.js +23 -0
- package/dist/tr-DsCiwSIu.js +60 -0
- package/dist/tree-BiWLXiUu.js +46 -0
- package/dist/uname-BCn8HlJD.js +37 -0
- package/dist/uniq-BZMOwoCc.js +51 -0
- package/dist/unzip-DP4I991d.js +82 -0
- package/dist/uptime-CgBJegqU.js +8 -0
- package/dist/utils/archive.d.ts +22 -0
- package/dist/utils/archive.d.ts.map +1 -0
- package/dist/utils/args.d.ts +12 -0
- package/dist/utils/args.d.ts.map +1 -0
- package/dist/utils/colors.d.ts +27 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/encoding.d.ts +4 -0
- package/dist/utils/encoding.d.ts.map +1 -0
- package/dist/utils/glob.d.ts +12 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/path.d.ts +12 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/wc-CpE5K4ZI.js +60 -0
- package/dist/wget-DIPI0-I3.js +53 -0
- package/dist/which-D3u0cwyh.js +105 -0
- package/dist/whoami-B1237V5e.js +8 -0
- package/dist/xargs-DfbCRFFd.js +35 -0
- package/dist/yes-DXEyHHD2.js +10 -0
- package/dist/zip-B_gQ6LXC.js +34 -0
- package/package.json +34 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { r as c, V as g } from "./index-Be1wosKt.js";
|
|
2
|
+
function h(e) {
|
|
3
|
+
if (e === "d")
|
|
4
|
+
return { type: "d" };
|
|
5
|
+
if (e === "p")
|
|
6
|
+
return { type: "p" };
|
|
7
|
+
if (e.startsWith("s")) {
|
|
8
|
+
const u = e[1];
|
|
9
|
+
if (!u) return null;
|
|
10
|
+
const n = [];
|
|
11
|
+
let l = "", f = !1;
|
|
12
|
+
for (let r = 2; r < e.length; r++)
|
|
13
|
+
f ? (l += e[r], f = !1) : e[r] === "\\" ? (f = !0, l += "\\") : e[r] === u ? (n.push(l), l = "") : l += e[r];
|
|
14
|
+
if (n.push(l), n.length < 2) return null;
|
|
15
|
+
const p = n[0], d = n[1], t = n[2] || "", s = t.includes("g"), i = t.includes("i");
|
|
16
|
+
let o;
|
|
17
|
+
try {
|
|
18
|
+
let r = "";
|
|
19
|
+
s && (r += "g"), i && (r += "i"), o = new RegExp(p, r);
|
|
20
|
+
} catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return { type: "s", pattern: o, replacement: d, global: s };
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const w = async (e) => {
|
|
28
|
+
let u = !1;
|
|
29
|
+
const n = [], l = [];
|
|
30
|
+
for (let t = 0; t < e.args.length; t++) {
|
|
31
|
+
const s = e.args[t];
|
|
32
|
+
s === "-i" ? u = !0 : s === "-e" && t + 1 < e.args.length ? n.push(e.args[++t]) : n.length === 0 && !s.startsWith("-") ? n.push(s) : l.push(s);
|
|
33
|
+
}
|
|
34
|
+
if (n.length === 0)
|
|
35
|
+
return e.stderr.write(`sed: missing expression
|
|
36
|
+
`), 1;
|
|
37
|
+
const f = [];
|
|
38
|
+
for (const t of n) {
|
|
39
|
+
const s = h(t);
|
|
40
|
+
if (!s)
|
|
41
|
+
return e.stderr.write(`sed: invalid expression: ${t}
|
|
42
|
+
`), 1;
|
|
43
|
+
f.push(s);
|
|
44
|
+
}
|
|
45
|
+
function p(t) {
|
|
46
|
+
const s = t.replace(/\n$/, "").split(`
|
|
47
|
+
`), i = [];
|
|
48
|
+
for (let o of s) {
|
|
49
|
+
let r = !1;
|
|
50
|
+
for (const a of f)
|
|
51
|
+
if (a.type === "s" && a.pattern && a.replacement !== void 0)
|
|
52
|
+
o = o.replace(a.pattern, a.replacement);
|
|
53
|
+
else if (a.type === "d") {
|
|
54
|
+
r = !0;
|
|
55
|
+
break;
|
|
56
|
+
} else a.type === "p" && i.push(o);
|
|
57
|
+
r || i.push(o);
|
|
58
|
+
}
|
|
59
|
+
return i.join(`
|
|
60
|
+
`) + `
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
if (l.length === 0) {
|
|
64
|
+
if (e.stdin) {
|
|
65
|
+
const t = await e.stdin.readAll();
|
|
66
|
+
e.stdout.write(p(t));
|
|
67
|
+
} else
|
|
68
|
+
return e.stderr.write(`sed: missing file operand
|
|
69
|
+
`), 1;
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
let d = 0;
|
|
73
|
+
for (const t of l) {
|
|
74
|
+
const s = c(e.cwd, t);
|
|
75
|
+
try {
|
|
76
|
+
const i = e.vfs.readFileString(s), o = p(i);
|
|
77
|
+
u ? e.vfs.writeFile(s, o) : e.stdout.write(o);
|
|
78
|
+
} catch (i) {
|
|
79
|
+
if (i instanceof g)
|
|
80
|
+
e.stderr.write(`sed: ${t}: ${i.message}
|
|
81
|
+
`), d = 1;
|
|
82
|
+
else
|
|
83
|
+
throw i;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return d;
|
|
87
|
+
};
|
|
88
|
+
export {
|
|
89
|
+
w as default
|
|
90
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Terminal } from '../terminal/Terminal.js';
|
|
2
|
+
import { VFS } from '../kernel/vfs/index.js';
|
|
3
|
+
import { CommandRegistry } from '../commands/registry.js';
|
|
4
|
+
import { JobTable } from './jobs.js';
|
|
5
|
+
export interface ExecuteOptions {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
env?: Record<string, string>;
|
|
8
|
+
onStdout?: (data: string) => void;
|
|
9
|
+
onStderr?: (data: string) => void;
|
|
10
|
+
stdin?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class Shell {
|
|
13
|
+
private terminal;
|
|
14
|
+
private vfs;
|
|
15
|
+
private registry;
|
|
16
|
+
private cwd;
|
|
17
|
+
private env;
|
|
18
|
+
private aliases;
|
|
19
|
+
private lineBuffer;
|
|
20
|
+
private cursorPos;
|
|
21
|
+
private history;
|
|
22
|
+
private historyIndex;
|
|
23
|
+
private savedLine;
|
|
24
|
+
private running;
|
|
25
|
+
private abortController;
|
|
26
|
+
private terminalStdin;
|
|
27
|
+
private stdinLineBuffer;
|
|
28
|
+
private stdinCursorPos;
|
|
29
|
+
private interpreter;
|
|
30
|
+
private interpreterConfig;
|
|
31
|
+
private historyManager;
|
|
32
|
+
private jobTable;
|
|
33
|
+
private builtins;
|
|
34
|
+
private tabCount;
|
|
35
|
+
constructor(terminal: Terminal, vfs: VFS, registry: CommandRegistry, env: Record<string, string>);
|
|
36
|
+
private registerBuiltins;
|
|
37
|
+
getJobTable(): JobTable;
|
|
38
|
+
getCwd(): string;
|
|
39
|
+
setCwd(cwd: string): void;
|
|
40
|
+
getEnv(): Record<string, string>;
|
|
41
|
+
getVfs(): VFS;
|
|
42
|
+
getRegistry(): CommandRegistry;
|
|
43
|
+
/**
|
|
44
|
+
* Programmatic command execution with captured stdout/stderr.
|
|
45
|
+
* Used by Sandbox.commands.run() for headless mode.
|
|
46
|
+
*/
|
|
47
|
+
execute(cmd: string, options?: ExecuteOptions): Promise<{
|
|
48
|
+
stdout: string;
|
|
49
|
+
stderr: string;
|
|
50
|
+
exitCode: number;
|
|
51
|
+
}>;
|
|
52
|
+
start(): void;
|
|
53
|
+
private printPrompt;
|
|
54
|
+
private handleInput;
|
|
55
|
+
private handleTab;
|
|
56
|
+
private handleStdinInput;
|
|
57
|
+
private applyCompletion;
|
|
58
|
+
private clearLine;
|
|
59
|
+
private redrawLine;
|
|
60
|
+
private moveCursorLeft;
|
|
61
|
+
private moveCursorRight;
|
|
62
|
+
private moveCursorHome;
|
|
63
|
+
private moveCursorEnd;
|
|
64
|
+
private historyUp;
|
|
65
|
+
private historyDown;
|
|
66
|
+
private executeLine;
|
|
67
|
+
private builtinCd;
|
|
68
|
+
private builtinPwd;
|
|
69
|
+
private builtinEcho;
|
|
70
|
+
private builtinClear;
|
|
71
|
+
private builtinExport;
|
|
72
|
+
private builtinExit;
|
|
73
|
+
private builtinJobs;
|
|
74
|
+
private builtinFg;
|
|
75
|
+
private builtinBg;
|
|
76
|
+
private builtinHistory;
|
|
77
|
+
sourceFile(path: string): Promise<void>;
|
|
78
|
+
private builtinSource;
|
|
79
|
+
private builtinAlias;
|
|
80
|
+
private builtinUnalias;
|
|
81
|
+
private writeToTerminal;
|
|
82
|
+
tokenize(input: string): string[];
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=Shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shell.d.ts","sourceRoot":"","sources":["../../src/shell/Shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { VFS } from '../kernel/vfs/index.js';
|
|
2
|
+
import { CommandRegistry } from '../commands/registry.js';
|
|
3
|
+
export interface CompletionResult {
|
|
4
|
+
replacementStart: number;
|
|
5
|
+
replacementEnd: number;
|
|
6
|
+
completions: string[];
|
|
7
|
+
commonPrefix: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CompletionContext {
|
|
10
|
+
line: string;
|
|
11
|
+
cursorPos: number;
|
|
12
|
+
cwd: string;
|
|
13
|
+
env: Record<string, string>;
|
|
14
|
+
vfs: VFS;
|
|
15
|
+
registry: CommandRegistry;
|
|
16
|
+
builtinNames: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function complete(ctx: CompletionContext): CompletionResult;
|
|
19
|
+
//# sourceMappingURL=completer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completer.d.ts","sourceRoot":"","sources":["../../src/shell/completer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,gBAAgB,CAoCjE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { WordPart } from './types.js';
|
|
2
|
+
import { VFS } from '../kernel/vfs/index.js';
|
|
3
|
+
export interface ExpandContext {
|
|
4
|
+
env: Record<string, string>;
|
|
5
|
+
lastExitCode: number;
|
|
6
|
+
cwd: string;
|
|
7
|
+
vfs: VFS;
|
|
8
|
+
executeCapture?: (input: string) => Promise<string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Expand all words for a command's arguments.
|
|
12
|
+
* Handles variable expansion, tilde expansion, glob expansion, and command substitution.
|
|
13
|
+
*/
|
|
14
|
+
export declare function expandWords(words: WordPart[][], ctx: ExpandContext): Promise<string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Expand a single word (e.g., for redirect targets).
|
|
17
|
+
* No glob expansion.
|
|
18
|
+
*/
|
|
19
|
+
export declare function expandWord(parts: WordPart[], ctx: ExpandContext): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=expander.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expander.d.ts","sourceRoot":"","sources":["../../src/shell/expander.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACrD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB5F;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { VFS } from '../kernel/vfs/index.js';
|
|
2
|
+
export declare class HistoryManager {
|
|
3
|
+
private entries;
|
|
4
|
+
private vfs;
|
|
5
|
+
constructor(vfs: VFS);
|
|
6
|
+
load(): void;
|
|
7
|
+
save(): void;
|
|
8
|
+
add(line: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Expand history references:
|
|
11
|
+
* !! -> last command
|
|
12
|
+
* !n -> nth command (1-based)
|
|
13
|
+
* !-n -> nth from end
|
|
14
|
+
* !prefix -> most recent command starting with prefix
|
|
15
|
+
* Returns null if no expansion needed.
|
|
16
|
+
*/
|
|
17
|
+
expand(line: string): string | null;
|
|
18
|
+
get(index: number): string | undefined;
|
|
19
|
+
getAll(): string[];
|
|
20
|
+
get length(): number;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/shell/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAKlD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,GAAG,CAAM;gBAEL,GAAG,EAAE,GAAG;IAIpB,IAAI,IAAI,IAAI;IASZ,IAAI,IAAI,IAAI;IAQZ,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmBvB;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA6CnC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAItC,MAAM,IAAI,MAAM,EAAE;IAIlB,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ScriptNode } from './types.js';
|
|
2
|
+
import { VFS } from '../kernel/vfs/index.js';
|
|
3
|
+
import { CommandRegistry } from '../commands/registry.js';
|
|
4
|
+
import { CommandOutputStream, CommandInputStream } from '../commands/types.js';
|
|
5
|
+
import { JobTable } from './jobs.js';
|
|
6
|
+
import { TerminalStdin } from './terminal-stdin.js';
|
|
7
|
+
export declare class BreakSignal {
|
|
8
|
+
levels: number;
|
|
9
|
+
constructor(levels: number);
|
|
10
|
+
}
|
|
11
|
+
export declare class ContinueSignal {
|
|
12
|
+
levels: number;
|
|
13
|
+
constructor(levels: number);
|
|
14
|
+
}
|
|
15
|
+
export declare class ReturnSignal {
|
|
16
|
+
exitCode: number;
|
|
17
|
+
constructor(exitCode: number);
|
|
18
|
+
}
|
|
19
|
+
export type BuiltinFn = (args: string[], stdout: CommandOutputStream, stderr: CommandOutputStream, stdin?: CommandInputStream) => Promise<number>;
|
|
20
|
+
export interface InterpreterConfig {
|
|
21
|
+
env: Record<string, string>;
|
|
22
|
+
getCwd: () => string;
|
|
23
|
+
setCwd: (cwd: string) => void;
|
|
24
|
+
vfs: VFS;
|
|
25
|
+
registry: CommandRegistry;
|
|
26
|
+
builtins: Map<string, BuiltinFn>;
|
|
27
|
+
jobTable: JobTable;
|
|
28
|
+
writeToTerminal: (text: string) => void;
|
|
29
|
+
aliases?: Map<string, string>;
|
|
30
|
+
/** Override default stdout for programmatic capture */
|
|
31
|
+
defaultStdout?: CommandOutputStream;
|
|
32
|
+
/** Override default stderr for programmatic capture */
|
|
33
|
+
defaultStderr?: CommandOutputStream;
|
|
34
|
+
/** Returns the current abort signal for foreground commands */
|
|
35
|
+
getAbortSignal?: () => AbortSignal;
|
|
36
|
+
}
|
|
37
|
+
export declare class Interpreter {
|
|
38
|
+
private config;
|
|
39
|
+
private lastExitCode;
|
|
40
|
+
private functions;
|
|
41
|
+
constructor(config: InterpreterConfig);
|
|
42
|
+
getLastExitCode(): number;
|
|
43
|
+
executeScript(script: ScriptNode, terminalStdin?: TerminalStdin): Promise<number>;
|
|
44
|
+
executeLine(input: string, terminalStdin?: TerminalStdin): Promise<number>;
|
|
45
|
+
private executeList;
|
|
46
|
+
private getListCommandText;
|
|
47
|
+
private executeListEntries;
|
|
48
|
+
private executePipeline;
|
|
49
|
+
private executePipelineCommands;
|
|
50
|
+
private executeCommand;
|
|
51
|
+
private executeIf;
|
|
52
|
+
private executeFor;
|
|
53
|
+
private executeWhile;
|
|
54
|
+
private executeUntil;
|
|
55
|
+
private executeCase;
|
|
56
|
+
private executeFunctionDef;
|
|
57
|
+
private executeGroup;
|
|
58
|
+
private executeCompoundList;
|
|
59
|
+
private executeSimpleCommand;
|
|
60
|
+
private executeFunction;
|
|
61
|
+
executeCapture(input: string): Promise<string>;
|
|
62
|
+
private createExpandContext;
|
|
63
|
+
private createFileWriter;
|
|
64
|
+
private createFileAppender;
|
|
65
|
+
private createFileReader;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/shell/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAYX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,qBAAa,WAAW;IACH,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAClC;AAED,qBAAa,cAAc;IACN,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAClC;AAED,qBAAa,YAAY;IACJ,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CACpC;AAED,MAAM,MAAM,SAAS,GAAG,CACtB,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,CAAC,EAAE,kBAAkB,KACvB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,uDAAuD;IACvD,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,uDAAuD;IACvD,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,WAAW,CAAC;CACpC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAA0C;gBAE/C,MAAM,EAAE,iBAAiB;IAIrC,eAAe,IAAI,MAAM;IAInB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IASjF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YAiBlE,WAAW;IAezB,OAAO,CAAC,kBAAkB;YAWZ,kBAAkB;YAsBlB,eAAe;YAoBf,uBAAuB;YAiCvB,cAAc;YA0Bd,SAAS;YAoBT,UAAU;YAkCV,YAAY;YA0BZ,YAAY;YA0BZ,WAAW;YAoBX,kBAAkB;YAKlB,YAAY;YAMZ,mBAAmB;YAQnB,oBAAoB;YAwKpB,eAAe;IA2CvB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBpD,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;CAYzB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface Job {
|
|
2
|
+
id: number;
|
|
3
|
+
command: string;
|
|
4
|
+
promise: Promise<number>;
|
|
5
|
+
abortController: AbortController;
|
|
6
|
+
status: 'running' | 'done' | 'stopped';
|
|
7
|
+
exitCode: number | null;
|
|
8
|
+
}
|
|
9
|
+
export declare class JobTable {
|
|
10
|
+
private jobs;
|
|
11
|
+
private nextId;
|
|
12
|
+
add(command: string, promise: Promise<number>, abortController: AbortController): number;
|
|
13
|
+
list(): Job[];
|
|
14
|
+
get(id: number): Job | undefined;
|
|
15
|
+
remove(id: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Collect and remove finished jobs, returning their info for display.
|
|
18
|
+
*/
|
|
19
|
+
collectDone(): Job[];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/shell/jobs.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,MAAM,CAAK;IAEnB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,eAAe,GAAG,MAAM;IAuBxF,IAAI,IAAI,GAAG,EAAE;IAIb,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAIhC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,WAAW,IAAI,GAAG,EAAE;CAYrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/shell/lexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAElE,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAgD1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/shell/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,UAAU,EAchB,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAW,SAAQ,KAAK;IACC,GAAG,EAAE,MAAM;gBAAnC,OAAO,EAAE,MAAM,EAAS,GAAG,EAAE,MAAM;CAIhD;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAGjD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommandOutputStream, CommandInputStream } from '../commands/types.js';
|
|
2
|
+
export declare class PipeChannel {
|
|
3
|
+
private buffer;
|
|
4
|
+
private closed;
|
|
5
|
+
private waiting;
|
|
6
|
+
readonly writer: CommandOutputStream;
|
|
7
|
+
readonly reader: CommandInputStream;
|
|
8
|
+
private read;
|
|
9
|
+
private readAll;
|
|
10
|
+
close(): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=pipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../src/shell/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiD;IAEhE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAUlC;IAEF,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAGjC;IAEF,OAAO,CAAC,IAAI;YAYE,OAAO;IAUrB,KAAK,IAAI,IAAI;CAQd"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CommandInputStream } from '../commands/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A bridge between terminal keyboard input and command stdin.
|
|
4
|
+
* The Shell feeds lines in via feed(), commands consume via read()/readAll().
|
|
5
|
+
*/
|
|
6
|
+
export declare class TerminalStdin implements CommandInputStream {
|
|
7
|
+
private buffer;
|
|
8
|
+
private closed;
|
|
9
|
+
private resolver;
|
|
10
|
+
private _waiting;
|
|
11
|
+
/** True when a command has called read() and is waiting for input. */
|
|
12
|
+
get isWaiting(): boolean;
|
|
13
|
+
/** Shell calls this on Enter (with line + '\n'). */
|
|
14
|
+
feed(text: string): void;
|
|
15
|
+
/** Shell calls this on Ctrl+D to signal EOF. */
|
|
16
|
+
close(): void;
|
|
17
|
+
/** Commands consume input. Returns null on EOF. */
|
|
18
|
+
read(): Promise<string | null>;
|
|
19
|
+
/** Read all remaining input until EOF, joined together. */
|
|
20
|
+
readAll(): Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=terminal-stdin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-stdin.d.ts","sourceRoot":"","sources":["../../src/shell/terminal-stdin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;GAGG;AACH,qBAAa,aAAc,YAAW,kBAAkB;IACtD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,QAAQ,CAAS;IAEzB,sEAAsE;IACtE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,oDAAoD;IACpD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAaxB,gDAAgD;IAChD,KAAK,IAAI,IAAI;IAYb,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAapC,2DAA2D;IACrD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CASjC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { VFS } from '../kernel/vfs/index.js';
|
|
2
|
+
import { CommandOutputStream } from '../commands/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Implementation of the `test` / `[` shell builtin.
|
|
5
|
+
* Evaluates conditional expressions.
|
|
6
|
+
*/
|
|
7
|
+
export declare function evaluateTest(args: string[], vfs: VFS, stderr: CommandOutputStream): number;
|
|
8
|
+
//# sourceMappingURL=test-builtin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-builtin.d.ts","sourceRoot":"","sources":["../../src/shell/test-builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAqBR"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export declare enum TokenKind {
|
|
2
|
+
Word = 0,
|
|
3
|
+
Pipe = 1,// |
|
|
4
|
+
And = 2,// &&
|
|
5
|
+
Or = 3,// ||
|
|
6
|
+
Semi = 4,// ;
|
|
7
|
+
Amp = 5,// &
|
|
8
|
+
RedirectOut = 6,// >
|
|
9
|
+
RedirectAppend = 7,// >>
|
|
10
|
+
RedirectIn = 8,// <
|
|
11
|
+
RedirectErr = 9,// 2>
|
|
12
|
+
RedirectErrAppend = 10,// 2>>
|
|
13
|
+
RedirectAll = 11,// &>
|
|
14
|
+
DoubleSemi = 12,// ;;
|
|
15
|
+
LParen = 13,// (
|
|
16
|
+
RParen = 14,// )
|
|
17
|
+
Newline = 15,// \n
|
|
18
|
+
EOF = 16
|
|
19
|
+
}
|
|
20
|
+
export interface WordPart {
|
|
21
|
+
text: string;
|
|
22
|
+
quoted: 'none' | 'single' | 'double';
|
|
23
|
+
}
|
|
24
|
+
export interface Token {
|
|
25
|
+
kind: TokenKind;
|
|
26
|
+
value: string;
|
|
27
|
+
pos: number;
|
|
28
|
+
parts?: WordPart[];
|
|
29
|
+
}
|
|
30
|
+
export interface ScriptNode {
|
|
31
|
+
type: 'script';
|
|
32
|
+
lists: ListNode[];
|
|
33
|
+
}
|
|
34
|
+
export interface ListNode {
|
|
35
|
+
type: 'list';
|
|
36
|
+
entries: Array<{
|
|
37
|
+
pipeline: PipelineNode;
|
|
38
|
+
connector: '&&' | '||' | null;
|
|
39
|
+
}>;
|
|
40
|
+
background: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface PipelineNode {
|
|
43
|
+
type: 'pipeline';
|
|
44
|
+
commands: CompoundCommandNode[];
|
|
45
|
+
negated: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface SimpleCommandNode {
|
|
48
|
+
type: 'simple_command';
|
|
49
|
+
assignments: Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
value: WordPart[];
|
|
52
|
+
}>;
|
|
53
|
+
words: WordPart[][];
|
|
54
|
+
redirections: RedirectionNode[];
|
|
55
|
+
}
|
|
56
|
+
export interface RedirectionNode {
|
|
57
|
+
operator: '>' | '>>' | '<' | '2>' | '2>>' | '&>';
|
|
58
|
+
target: WordPart[];
|
|
59
|
+
}
|
|
60
|
+
export interface IfNode {
|
|
61
|
+
type: 'if';
|
|
62
|
+
clauses: Array<{
|
|
63
|
+
condition: ListNode[];
|
|
64
|
+
body: ListNode[];
|
|
65
|
+
}>;
|
|
66
|
+
elseBody: ListNode[] | null;
|
|
67
|
+
redirections: RedirectionNode[];
|
|
68
|
+
}
|
|
69
|
+
export interface ForNode {
|
|
70
|
+
type: 'for';
|
|
71
|
+
variable: string;
|
|
72
|
+
words: WordPart[][] | null;
|
|
73
|
+
body: ListNode[];
|
|
74
|
+
redirections: RedirectionNode[];
|
|
75
|
+
}
|
|
76
|
+
export interface WhileNode {
|
|
77
|
+
type: 'while';
|
|
78
|
+
condition: ListNode[];
|
|
79
|
+
body: ListNode[];
|
|
80
|
+
redirections: RedirectionNode[];
|
|
81
|
+
}
|
|
82
|
+
export interface UntilNode {
|
|
83
|
+
type: 'until';
|
|
84
|
+
condition: ListNode[];
|
|
85
|
+
body: ListNode[];
|
|
86
|
+
redirections: RedirectionNode[];
|
|
87
|
+
}
|
|
88
|
+
export interface CaseNode {
|
|
89
|
+
type: 'case';
|
|
90
|
+
word: WordPart[];
|
|
91
|
+
items: Array<{
|
|
92
|
+
patterns: WordPart[][];
|
|
93
|
+
body: ListNode[];
|
|
94
|
+
}>;
|
|
95
|
+
redirections: RedirectionNode[];
|
|
96
|
+
}
|
|
97
|
+
export interface FunctionDefNode {
|
|
98
|
+
type: 'function_def';
|
|
99
|
+
name: string;
|
|
100
|
+
body: CompoundCommandNode;
|
|
101
|
+
}
|
|
102
|
+
export interface GroupNode {
|
|
103
|
+
type: 'group';
|
|
104
|
+
body: ListNode[];
|
|
105
|
+
redirections: RedirectionNode[];
|
|
106
|
+
}
|
|
107
|
+
export type CompoundCommandNode = SimpleCommandNode | IfNode | ForNode | WhileNode | UntilNode | CaseNode | GroupNode | FunctionDefNode;
|
|
108
|
+
export type ASTNode = ScriptNode | ListNode | PipelineNode | CompoundCommandNode;
|
|
109
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const i = async (e) => {
|
|
2
|
+
if (e.args.length === 0)
|
|
3
|
+
return e.stderr.write(`sleep: missing operand
|
|
4
|
+
`), 1;
|
|
5
|
+
const r = parseFloat(e.args[0]);
|
|
6
|
+
if (isNaN(r) || r < 0)
|
|
7
|
+
return e.stderr.write(`sleep: invalid time interval '${e.args[0]}'
|
|
8
|
+
`), 1;
|
|
9
|
+
const s = Math.round(r * 1e3);
|
|
10
|
+
return await new Promise((n) => {
|
|
11
|
+
const t = setTimeout(n, s), a = () => {
|
|
12
|
+
clearTimeout(t), n();
|
|
13
|
+
};
|
|
14
|
+
e.signal.addEventListener("abort", a, { once: !0 });
|
|
15
|
+
}), e.signal.aborted ? 130 : 0;
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
i as default
|
|
19
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { r as p, V as h } from "./index-Be1wosKt.js";
|
|
2
|
+
const k = async (s) => {
|
|
3
|
+
let f = !1, u = !1, g = !1, a = 0;
|
|
4
|
+
const i = [];
|
|
5
|
+
for (let e = 0; e < s.args.length; e++) {
|
|
6
|
+
const r = s.args[e];
|
|
7
|
+
if (r === "-k" && e + 1 < s.args.length)
|
|
8
|
+
a = parseInt(s.args[++e], 10);
|
|
9
|
+
else if (r.startsWith("-") && r.length > 1)
|
|
10
|
+
for (let t = 1; t < r.length; t++)
|
|
11
|
+
switch (r[t]) {
|
|
12
|
+
case "r":
|
|
13
|
+
f = !0;
|
|
14
|
+
break;
|
|
15
|
+
case "n":
|
|
16
|
+
u = !0;
|
|
17
|
+
break;
|
|
18
|
+
case "u":
|
|
19
|
+
g = !0;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
else
|
|
23
|
+
i.push(r);
|
|
24
|
+
}
|
|
25
|
+
let o = "";
|
|
26
|
+
if (i.length === 0)
|
|
27
|
+
if (s.stdin)
|
|
28
|
+
o = await s.stdin.readAll();
|
|
29
|
+
else
|
|
30
|
+
return s.stderr.write(`sort: missing file operand
|
|
31
|
+
`), 1;
|
|
32
|
+
else
|
|
33
|
+
for (const e of i) {
|
|
34
|
+
const r = p(s.cwd, e);
|
|
35
|
+
try {
|
|
36
|
+
o += s.vfs.readFileString(r);
|
|
37
|
+
} catch (t) {
|
|
38
|
+
if (t instanceof h)
|
|
39
|
+
return s.stderr.write(`sort: ${e}: ${t.message}
|
|
40
|
+
`), 1;
|
|
41
|
+
throw t;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
let l = o.replace(/\n$/, "").split(`
|
|
45
|
+
`);
|
|
46
|
+
function c(e) {
|
|
47
|
+
return a > 0 ? e.split(/\s+/)[a - 1] || "" : e;
|
|
48
|
+
}
|
|
49
|
+
return l.sort((e, r) => {
|
|
50
|
+
const t = c(e), d = c(r);
|
|
51
|
+
let n;
|
|
52
|
+
return u ? n = (parseFloat(t) || 0) - (parseFloat(d) || 0) : n = t.localeCompare(d), f ? -n : n;
|
|
53
|
+
}), g && (l = l.filter((e, r) => r === 0 || e !== l[r - 1])), s.stdout.write(l.join(`
|
|
54
|
+
`) + `
|
|
55
|
+
`), 0;
|
|
56
|
+
};
|
|
57
|
+
export {
|
|
58
|
+
k as default
|
|
59
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { r as n, V as d } from "./index-Be1wosKt.js";
|
|
2
|
+
const w = async (t) => {
|
|
3
|
+
if (t.args.length === 0)
|
|
4
|
+
return t.stderr.write(`stat: missing operand
|
|
5
|
+
`), 1;
|
|
6
|
+
let o = 0;
|
|
7
|
+
for (const r of t.args) {
|
|
8
|
+
const s = n(t.cwd, r);
|
|
9
|
+
try {
|
|
10
|
+
const e = t.vfs.stat(s), i = "0" + e.mode.toString(8), a = e.type === "directory" ? "directory" : "regular file";
|
|
11
|
+
t.stdout.write(` File: ${r}
|
|
12
|
+
`), t.stdout.write(` Size: ${e.size} Type: ${a}
|
|
13
|
+
`), t.stdout.write(` Mode: ${i}
|
|
14
|
+
`), t.stdout.write(` Created: ${new Date(e.ctime).toISOString()}
|
|
15
|
+
`), t.stdout.write(` Modified: ${new Date(e.mtime).toISOString()}
|
|
16
|
+
`);
|
|
17
|
+
} catch (e) {
|
|
18
|
+
if (e instanceof d)
|
|
19
|
+
t.stderr.write(`stat: ${r}: ${e.message}
|
|
20
|
+
`), o = 1;
|
|
21
|
+
else
|
|
22
|
+
throw e;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return o;
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
w as default
|
|
29
|
+
};
|