typescript-virtual-container 1.2.5 → 1.2.6
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/README.md +387 -193
- package/benchmark-results.txt +21 -21
- package/dist/SSHMimic/exec.js +2 -2
- package/dist/SSHMimic/executor.d.ts +6 -7
- package/dist/SSHMimic/executor.d.ts.map +1 -1
- package/dist/SSHMimic/executor.js +77 -60
- package/dist/SSHMimic/index.d.ts.map +1 -1
- package/dist/SSHMimic/index.js +6 -20
- package/dist/SSHMimic/sftp.d.ts.map +1 -1
- package/dist/SSHMimic/sftp.js +14 -0
- package/dist/VirtualFileSystem/index.d.ts.map +1 -1
- package/dist/VirtualFileSystem/index.js +13 -36
- package/dist/VirtualShell/shell.d.ts.map +1 -1
- package/dist/VirtualShell/shell.js +19 -2
- package/dist/VirtualShell/shellParser.d.ts +20 -2
- package/dist/VirtualShell/shellParser.d.ts.map +1 -1
- package/dist/VirtualShell/shellParser.js +229 -120
- package/dist/VirtualUserManager/index.d.ts.map +1 -1
- package/dist/commands/adduser.d.ts.map +1 -1
- package/dist/commands/adduser.js +2 -0
- package/dist/commands/awk.d.ts +3 -0
- package/dist/commands/awk.d.ts.map +1 -0
- package/dist/commands/awk.js +29 -0
- package/dist/commands/base64.d.ts +3 -0
- package/dist/commands/base64.d.ts.map +1 -0
- package/dist/commands/base64.js +20 -0
- package/dist/commands/cat.d.ts.map +1 -1
- package/dist/commands/cat.js +2 -0
- package/dist/commands/cd.d.ts.map +1 -1
- package/dist/commands/cd.js +2 -0
- package/dist/commands/chmod.d.ts.map +1 -1
- package/dist/commands/chmod.js +2 -0
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +4 -1
- package/dist/commands/cp.d.ts.map +1 -1
- package/dist/commands/cp.js +2 -0
- package/dist/commands/curl.d.ts.map +1 -1
- package/dist/commands/curl.js +2 -0
- package/dist/commands/cut.d.ts +3 -0
- package/dist/commands/cut.d.ts.map +1 -0
- package/dist/commands/cut.js +27 -0
- package/dist/commands/date.d.ts +3 -0
- package/dist/commands/date.d.ts.map +1 -0
- package/dist/commands/date.js +22 -0
- package/dist/commands/deluser.d.ts.map +1 -1
- package/dist/commands/deluser.js +2 -0
- package/dist/commands/df.d.ts +3 -0
- package/dist/commands/df.d.ts.map +1 -0
- package/dist/commands/df.js +16 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +40 -0
- package/dist/commands/du.d.ts +3 -0
- package/dist/commands/du.d.ts.map +1 -0
- package/dist/commands/du.js +39 -0
- package/dist/commands/echo.d.ts.map +1 -1
- package/dist/commands/echo.js +2 -0
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +6 -14
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +11 -21
- package/dist/commands/find.d.ts.map +1 -1
- package/dist/commands/find.js +2 -0
- package/dist/commands/grep.d.ts.map +1 -1
- package/dist/commands/grep.js +4 -7
- package/dist/commands/groups.d.ts +3 -0
- package/dist/commands/groups.d.ts.map +1 -0
- package/dist/commands/groups.js +12 -0
- package/dist/commands/gzip.d.ts +4 -0
- package/dist/commands/gzip.d.ts.map +1 -0
- package/dist/commands/gzip.js +40 -0
- package/dist/commands/head.d.ts.map +1 -1
- package/dist/commands/head.js +2 -0
- package/dist/commands/help.d.ts +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +75 -3
- package/dist/commands/hostname.d.ts.map +1 -1
- package/dist/commands/hostname.js +2 -0
- package/dist/commands/htop.d.ts.map +1 -1
- package/dist/commands/htop.js +2 -0
- package/dist/commands/id.d.ts +3 -0
- package/dist/commands/id.d.ts.map +1 -0
- package/dist/commands/id.js +14 -0
- package/dist/commands/index.d.ts +5 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +89 -62
- package/dist/commands/kill.d.ts +3 -0
- package/dist/commands/kill.d.ts.map +1 -0
- package/dist/commands/kill.js +13 -0
- package/dist/commands/ln.d.ts.map +1 -1
- package/dist/commands/ln.js +2 -0
- package/dist/commands/ls.d.ts.map +1 -1
- package/dist/commands/ls.js +2 -0
- package/dist/commands/mkdir.d.ts.map +1 -1
- package/dist/commands/mkdir.js +2 -0
- package/dist/commands/mv.d.ts.map +1 -1
- package/dist/commands/mv.js +2 -0
- package/dist/commands/nano.d.ts.map +1 -1
- package/dist/commands/nano.js +2 -0
- package/dist/commands/neofetch.d.ts.map +1 -1
- package/dist/commands/neofetch.js +2 -0
- package/dist/commands/passwd.d.ts.map +1 -1
- package/dist/commands/passwd.js +2 -0
- package/dist/commands/ping.d.ts +3 -0
- package/dist/commands/ping.d.ts.map +1 -0
- package/dist/commands/ping.js +18 -0
- package/dist/commands/ps.d.ts +3 -0
- package/dist/commands/ps.d.ts.map +1 -0
- package/dist/commands/ps.js +17 -0
- package/dist/commands/pwd.d.ts.map +1 -1
- package/dist/commands/pwd.js +2 -0
- package/dist/commands/rm.d.ts.map +1 -1
- package/dist/commands/rm.js +2 -0
- package/dist/commands/sed.d.ts +3 -0
- package/dist/commands/sed.d.ts.map +1 -0
- package/dist/commands/sed.js +47 -0
- package/dist/commands/set.d.ts +3 -0
- package/dist/commands/set.d.ts.map +1 -1
- package/dist/commands/set.js +19 -46
- package/dist/commands/sh.d.ts +0 -1
- package/dist/commands/sh.d.ts.map +1 -1
- package/dist/commands/sh.js +228 -35
- package/dist/commands/sleep.d.ts +3 -0
- package/dist/commands/sleep.d.ts.map +1 -0
- package/dist/commands/sleep.js +13 -0
- package/dist/commands/sort.d.ts +3 -0
- package/dist/commands/sort.d.ts.map +1 -0
- package/dist/commands/sort.js +37 -0
- package/dist/commands/su.d.ts.map +1 -1
- package/dist/commands/su.js +2 -0
- package/dist/commands/sudo.d.ts.map +1 -1
- package/dist/commands/sudo.js +2 -0
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +2 -0
- package/dist/commands/tar.d.ts +3 -0
- package/dist/commands/tar.d.ts.map +1 -0
- package/dist/commands/tar.js +64 -0
- package/dist/commands/tee.d.ts +3 -0
- package/dist/commands/tee.d.ts.map +1 -0
- package/dist/commands/tee.js +29 -0
- package/dist/commands/touch.d.ts.map +1 -1
- package/dist/commands/touch.js +2 -0
- package/dist/commands/tr.d.ts +3 -0
- package/dist/commands/tr.d.ts.map +1 -0
- package/dist/commands/tr.js +24 -0
- package/dist/commands/tree.d.ts.map +1 -1
- package/dist/commands/tree.js +2 -0
- package/dist/commands/uname.d.ts +3 -0
- package/dist/commands/uname.d.ts.map +1 -0
- package/dist/commands/uname.js +21 -0
- package/dist/commands/uniq.d.ts +3 -0
- package/dist/commands/uniq.d.ts.map +1 -0
- package/dist/commands/uniq.js +33 -0
- package/dist/commands/unset.d.ts.map +1 -1
- package/dist/commands/unset.js +6 -10
- package/dist/commands/wc.d.ts.map +1 -1
- package/dist/commands/wc.js +2 -0
- package/dist/commands/wget.d.ts.map +1 -1
- package/dist/commands/wget.js +2 -0
- package/dist/commands/who.d.ts.map +1 -1
- package/dist/commands/who.js +2 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +2 -0
- package/dist/commands/xargs.d.ts +3 -0
- package/dist/commands/xargs.d.ts.map +1 -0
- package/dist/commands/xargs.js +16 -0
- package/dist/types/commands.d.ts +13 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/pipeline.d.ts +20 -0
- package/dist/types/pipeline.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/SSHMimic/exec.ts +2 -2
- package/src/SSHMimic/executor.ts +95 -98
- package/src/SSHMimic/index.ts +15 -49
- package/src/SSHMimic/sftp.ts +15 -0
- package/src/VirtualFileSystem/index.ts +27 -75
- package/src/VirtualShell/shell.ts +19 -2
- package/src/VirtualShell/shellParser.ts +202 -168
- package/src/VirtualUserManager/index.ts +2 -7
- package/src/commands/adduser.ts +2 -0
- package/src/commands/awk.ts +30 -0
- package/src/commands/base64.ts +18 -0
- package/src/commands/cat.ts +2 -0
- package/src/commands/cd.ts +2 -0
- package/src/commands/chmod.ts +2 -0
- package/src/commands/clear.ts +4 -1
- package/src/commands/cp.ts +2 -0
- package/src/commands/curl.ts +2 -0
- package/src/commands/cut.ts +29 -0
- package/src/commands/date.ts +24 -0
- package/src/commands/deluser.ts +2 -0
- package/src/commands/df.ts +18 -0
- package/src/commands/diff.ts +29 -0
- package/src/commands/du.ts +39 -0
- package/src/commands/echo.ts +2 -0
- package/src/commands/env.ts +6 -16
- package/src/commands/export.ts +11 -24
- package/src/commands/find.ts +2 -0
- package/src/commands/grep.ts +4 -7
- package/src/commands/groups.ts +14 -0
- package/src/commands/gzip.ts +31 -0
- package/src/commands/head.ts +2 -0
- package/src/commands/help.ts +81 -3
- package/src/commands/hostname.ts +2 -0
- package/src/commands/htop.ts +2 -0
- package/src/commands/id.ts +16 -0
- package/src/commands/index.ts +98 -99
- package/src/commands/kill.ts +14 -0
- package/src/commands/ln.ts +2 -0
- package/src/commands/ls.ts +2 -0
- package/src/commands/mkdir.ts +2 -0
- package/src/commands/mv.ts +2 -0
- package/src/commands/nano.ts +2 -0
- package/src/commands/neofetch.ts +2 -0
- package/src/commands/passwd.ts +2 -0
- package/src/commands/ping.ts +20 -0
- package/src/commands/ps.ts +19 -0
- package/src/commands/pwd.ts +2 -0
- package/src/commands/rm.ts +2 -0
- package/src/commands/sed.ts +45 -0
- package/src/commands/set.ts +19 -50
- package/src/commands/sh.ts +192 -43
- package/src/commands/sleep.ts +14 -0
- package/src/commands/sort.ts +37 -0
- package/src/commands/su.ts +2 -0
- package/src/commands/sudo.ts +2 -0
- package/src/commands/tail.ts +2 -0
- package/src/commands/tar.ts +58 -0
- package/src/commands/tee.ts +25 -0
- package/src/commands/touch.ts +2 -0
- package/src/commands/tr.ts +24 -0
- package/src/commands/tree.ts +2 -0
- package/src/commands/uname.ts +20 -0
- package/src/commands/uniq.ts +28 -0
- package/src/commands/unset.ts +5 -12
- package/src/commands/wc.ts +2 -0
- package/src/commands/wget.ts +2 -0
- package/src/commands/who.ts +2 -0
- package/src/commands/whoami.ts +2 -0
- package/src/commands/xargs.ts +17 -0
- package/src/types/commands.ts +14 -0
- package/src/types/pipeline.ts +23 -0
- package/standalone.js +92 -64
- package/standalone.js.map +4 -4
- package/tests/users.test.ts +5 -34
package/tests/users.test.ts
CHANGED
|
@@ -2,10 +2,7 @@ import { describe, expect, test } from "bun:test";
|
|
|
2
2
|
import VirtualFileSystem from "../src/VirtualFileSystem";
|
|
3
3
|
import { VirtualUserManager } from "../src/VirtualUserManager";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
function makeVfs(): VirtualFileSystem {
|
|
7
|
-
return new VirtualFileSystem();
|
|
8
|
-
}
|
|
5
|
+
function makeVfs() { return new VirtualFileSystem(); }
|
|
9
6
|
|
|
10
7
|
describe("VirtualUserManager auto sudo", () => {
|
|
11
8
|
test("adds new users to sudoers by default", async () => {
|
|
@@ -13,7 +10,6 @@ describe("VirtualUserManager auto sudo", () => {
|
|
|
13
10
|
const users = new VirtualUserManager(vfs);
|
|
14
11
|
await users.initialize();
|
|
15
12
|
await users.addUser("alice", "alice-pass");
|
|
16
|
-
|
|
17
13
|
expect(users.isSudoer("alice")).toBe(true);
|
|
18
14
|
});
|
|
19
15
|
|
|
@@ -22,7 +18,6 @@ describe("VirtualUserManager auto sudo", () => {
|
|
|
22
18
|
const users = new VirtualUserManager(vfs, false);
|
|
23
19
|
await users.initialize();
|
|
24
20
|
await users.addUser("bob", "bob-pass");
|
|
25
|
-
|
|
26
21
|
expect(users.isSudoer("bob")).toBe(false);
|
|
27
22
|
});
|
|
28
23
|
|
|
@@ -31,9 +26,7 @@ describe("VirtualUserManager auto sudo", () => {
|
|
|
31
26
|
const users = new VirtualUserManager(vfs);
|
|
32
27
|
await users.initialize();
|
|
33
28
|
await users.addUser("alice", "alice-pass");
|
|
34
|
-
|
|
35
29
|
await users.setPassword("alice", "new-pass");
|
|
36
|
-
|
|
37
30
|
expect(users.verifyPassword("alice", "new-pass")).toBe(true);
|
|
38
31
|
expect(users.verifyPassword("alice", "alice-pass")).toBe(false);
|
|
39
32
|
});
|
|
@@ -47,20 +40,9 @@ describe("VirtualUserManager quotas", () => {
|
|
|
47
40
|
await users.addUser("alice", "alice-pass");
|
|
48
41
|
const startingUsage = users.getUsageBytes("alice");
|
|
49
42
|
await users.setQuotaBytes("alice", startingUsage + 5);
|
|
50
|
-
|
|
51
|
-
expect(() => {
|
|
52
|
-
users.assertWriteWithinQuota("alice", "/home/alice/note.txt", "hello");
|
|
53
|
-
}).not.toThrow();
|
|
54
|
-
|
|
43
|
+
expect(() => { users.assertWriteWithinQuota("alice", "/home/alice/note.txt", "hello"); }).not.toThrow();
|
|
55
44
|
vfs.writeFile("/home/alice/note.txt", "hello");
|
|
56
|
-
|
|
57
|
-
expect(() => {
|
|
58
|
-
users.assertWriteWithinQuota(
|
|
59
|
-
"alice",
|
|
60
|
-
"/home/alice/note.txt",
|
|
61
|
-
"this exceeds the configured quota",
|
|
62
|
-
);
|
|
63
|
-
}).toThrow("quota exceeded for 'alice'");
|
|
45
|
+
expect(() => { users.assertWriteWithinQuota("alice", "/home/alice/note.txt", "this exceeds the configured quota"); }).toThrow("quota exceeded for 'alice'");
|
|
64
46
|
});
|
|
65
47
|
|
|
66
48
|
test("does not enforce home quota outside user home", async () => {
|
|
@@ -69,10 +51,7 @@ describe("VirtualUserManager quotas", () => {
|
|
|
69
51
|
await users.initialize();
|
|
70
52
|
await users.addUser("bob", "bob-pass");
|
|
71
53
|
await users.setQuotaBytes("bob", 1);
|
|
72
|
-
|
|
73
|
-
expect(() => {
|
|
74
|
-
users.assertWriteWithinQuota("bob", "/tmp/shared.txt", "large-content");
|
|
75
|
-
}).not.toThrow();
|
|
54
|
+
expect(() => { users.assertWriteWithinQuota("bob", "/tmp/shared.txt", "large-content"); }).not.toThrow();
|
|
76
55
|
});
|
|
77
56
|
|
|
78
57
|
test("clearQuota removes enforced limit", async () => {
|
|
@@ -81,17 +60,9 @@ describe("VirtualUserManager quotas", () => {
|
|
|
81
60
|
await users.initialize();
|
|
82
61
|
await users.addUser("charlie", "charlie-pass");
|
|
83
62
|
await users.setQuotaBytes("charlie", 2);
|
|
84
|
-
|
|
85
63
|
expect(users.getQuotaBytes("charlie")).toBe(2);
|
|
86
64
|
await users.clearQuota("charlie");
|
|
87
65
|
expect(users.getQuotaBytes("charlie")).toBeNull();
|
|
88
|
-
|
|
89
|
-
expect(() => {
|
|
90
|
-
users.assertWriteWithinQuota(
|
|
91
|
-
"charlie",
|
|
92
|
-
"/home/charlie/file.txt",
|
|
93
|
-
"long-content",
|
|
94
|
-
);
|
|
95
|
-
}).not.toThrow();
|
|
66
|
+
expect(() => { users.assertWriteWithinQuota("charlie", "/home/charlie/file.txt", "long-content"); }).not.toThrow();
|
|
96
67
|
});
|
|
97
68
|
});
|