typescript-virtual-container 1.5.0 → 1.5.2

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 (614) hide show
  1. package/.vscode/settings.json +2 -2
  2. package/README.md +41 -21
  3. package/build.js +22 -0
  4. package/builds/fortune-nyx-v1.5.1-directbash-k6.1.0.mjs +1768 -0
  5. package/builds/{standalone-wo-sftp.js → fortune-nyx-v1.5.1-ssh-nosftp.js} +180 -180
  6. package/builds/{standalone.cjs → fortune-nyx-v1.5.1-ssh.cjs} +17 -17
  7. package/builds/fortune-nyx-v1.5.1-web.min.js +17022 -0
  8. package/bun.lock +74 -0
  9. package/dist/Honeypot/index.d.ts +0 -1
  10. package/dist/Honeypot/index.js +0 -1
  11. package/dist/SSHClient/index.d.ts +0 -1
  12. package/dist/SSHClient/index.js +0 -1
  13. package/dist/SSHMimic/exec.d.ts +0 -1
  14. package/dist/SSHMimic/exec.js +0 -1
  15. package/dist/SSHMimic/executor.d.ts +0 -1
  16. package/dist/SSHMimic/executor.js +0 -1
  17. package/dist/SSHMimic/hostKey.d.ts +0 -1
  18. package/dist/SSHMimic/hostKey.js +0 -1
  19. package/dist/SSHMimic/index.d.ts +0 -1
  20. package/dist/SSHMimic/index.js +0 -1
  21. package/dist/SSHMimic/loginBanner.d.ts +0 -1
  22. package/dist/SSHMimic/loginBanner.js +0 -1
  23. package/dist/SSHMimic/loginFormat.d.ts +0 -1
  24. package/dist/SSHMimic/loginFormat.js +0 -1
  25. package/dist/SSHMimic/prompt.d.ts +0 -1
  26. package/dist/SSHMimic/prompt.js +0 -1
  27. package/dist/SSHMimic/sftp.d.ts +0 -1
  28. package/dist/SSHMimic/sftp.js +0 -1
  29. package/dist/VirtualFileSystem/binaryPack.d.ts +0 -1
  30. package/dist/VirtualFileSystem/binaryPack.js +0 -1
  31. package/dist/VirtualFileSystem/index.d.ts +0 -1
  32. package/dist/VirtualFileSystem/index.js +0 -1
  33. package/dist/VirtualFileSystem/internalTypes.d.ts +0 -1
  34. package/dist/VirtualFileSystem/internalTypes.js +0 -1
  35. package/dist/VirtualFileSystem/journal.d.ts +0 -1
  36. package/dist/VirtualFileSystem/journal.js +3 -2
  37. package/dist/VirtualFileSystem/path.d.ts +0 -1
  38. package/dist/VirtualFileSystem/path.js +0 -1
  39. package/dist/VirtualPackageManager/index.d.ts +0 -1
  40. package/dist/VirtualPackageManager/index.js +5 -6
  41. package/dist/VirtualShell/idleManager.d.ts +0 -1
  42. package/dist/VirtualShell/idleManager.js +0 -1
  43. package/dist/VirtualShell/index.d.ts +3 -2
  44. package/dist/VirtualShell/index.js +4 -2
  45. package/dist/VirtualShell/shell.d.ts +0 -1
  46. package/dist/VirtualShell/shell.js +0 -1
  47. package/dist/VirtualShell/shellParser.d.ts +0 -1
  48. package/dist/VirtualShell/shellParser.js +0 -1
  49. package/dist/VirtualUserManager/index.d.ts +0 -1
  50. package/dist/VirtualUserManager/index.js +0 -1
  51. package/dist/commands/adduser.d.ts +0 -1
  52. package/dist/commands/adduser.js +0 -1
  53. package/dist/commands/alias.d.ts +0 -1
  54. package/dist/commands/alias.js +0 -1
  55. package/dist/commands/apt.d.ts +0 -1
  56. package/dist/commands/apt.js +0 -1
  57. package/dist/commands/awk.d.ts +0 -1
  58. package/dist/commands/awk.js +0 -1
  59. package/dist/commands/base64.d.ts +0 -1
  60. package/dist/commands/base64.js +0 -1
  61. package/dist/commands/cat.d.ts +0 -1
  62. package/dist/commands/cat.js +0 -1
  63. package/dist/commands/cd.d.ts +0 -1
  64. package/dist/commands/cd.js +0 -1
  65. package/dist/commands/chmod.d.ts +0 -1
  66. package/dist/commands/chmod.js +0 -1
  67. package/dist/commands/clear.d.ts +0 -1
  68. package/dist/commands/clear.js +0 -1
  69. package/dist/commands/command-helpers.d.ts +0 -1
  70. package/dist/commands/command-helpers.js +0 -1
  71. package/dist/commands/cp.d.ts +0 -1
  72. package/dist/commands/cp.js +0 -1
  73. package/dist/commands/curl.d.ts +0 -1
  74. package/dist/commands/curl.js +0 -1
  75. package/dist/commands/cut.d.ts +0 -1
  76. package/dist/commands/cut.js +0 -1
  77. package/dist/commands/date.d.ts +0 -1
  78. package/dist/commands/date.js +0 -1
  79. package/dist/commands/declare.d.ts +0 -1
  80. package/dist/commands/declare.js +0 -1
  81. package/dist/commands/deluser.d.ts +0 -1
  82. package/dist/commands/deluser.js +0 -1
  83. package/dist/commands/df.d.ts +0 -1
  84. package/dist/commands/df.js +0 -1
  85. package/dist/commands/diff.d.ts +0 -1
  86. package/dist/commands/diff.js +0 -1
  87. package/dist/commands/dpkg.d.ts +0 -1
  88. package/dist/commands/dpkg.js +0 -1
  89. package/dist/commands/du.d.ts +0 -1
  90. package/dist/commands/du.js +0 -1
  91. package/dist/commands/echo.d.ts +0 -1
  92. package/dist/commands/echo.js +0 -1
  93. package/dist/commands/env.d.ts +0 -1
  94. package/dist/commands/env.js +0 -1
  95. package/dist/commands/exit.d.ts +0 -1
  96. package/dist/commands/exit.js +0 -1
  97. package/dist/commands/export.d.ts +0 -1
  98. package/dist/commands/export.js +0 -1
  99. package/dist/commands/find.d.ts +0 -1
  100. package/dist/commands/find.js +0 -1
  101. package/dist/commands/free.d.ts +0 -1
  102. package/dist/commands/free.js +0 -1
  103. package/dist/commands/grep.d.ts +0 -1
  104. package/dist/commands/grep.js +0 -1
  105. package/dist/commands/groups.d.ts +0 -1
  106. package/dist/commands/groups.js +0 -1
  107. package/dist/commands/gzip.d.ts +0 -1
  108. package/dist/commands/gzip.js +0 -1
  109. package/dist/commands/head.d.ts +0 -1
  110. package/dist/commands/head.js +0 -1
  111. package/dist/commands/help.d.ts +0 -1
  112. package/dist/commands/help.js +0 -1
  113. package/dist/commands/helpers.d.ts +0 -1
  114. package/dist/commands/helpers.js +0 -1
  115. package/dist/commands/history.d.ts +0 -1
  116. package/dist/commands/history.js +0 -1
  117. package/dist/commands/hostname.d.ts +0 -1
  118. package/dist/commands/hostname.js +0 -1
  119. package/dist/commands/htop.d.ts +0 -1
  120. package/dist/commands/htop.js +0 -1
  121. package/dist/commands/id.d.ts +0 -1
  122. package/dist/commands/id.js +0 -1
  123. package/dist/commands/index.d.ts +0 -1
  124. package/dist/commands/index.js +0 -1
  125. package/dist/commands/kill.d.ts +0 -1
  126. package/dist/commands/kill.js +0 -1
  127. package/dist/commands/ln.d.ts +0 -1
  128. package/dist/commands/ln.js +0 -1
  129. package/dist/commands/ls.d.ts +0 -1
  130. package/dist/commands/ls.js +0 -1
  131. package/dist/commands/lsb-release.d.ts +0 -1
  132. package/dist/commands/lsb-release.js +0 -1
  133. package/dist/commands/man.d.ts +0 -1
  134. package/dist/commands/man.js +0 -1
  135. package/dist/commands/manuals-bundle.d.ts +0 -1
  136. package/dist/commands/manuals-bundle.js +0 -1
  137. package/dist/commands/mkdir.d.ts +0 -1
  138. package/dist/commands/mkdir.js +0 -1
  139. package/dist/commands/mv.d.ts +0 -1
  140. package/dist/commands/mv.js +0 -1
  141. package/dist/commands/nano.d.ts +0 -1
  142. package/dist/commands/nano.js +0 -1
  143. package/dist/commands/neofetch.d.ts +0 -1
  144. package/dist/commands/neofetch.js +0 -1
  145. package/dist/commands/node.d.ts +0 -1
  146. package/dist/commands/node.js +0 -1
  147. package/dist/commands/npm.d.ts +0 -1
  148. package/dist/commands/npm.js +0 -1
  149. package/dist/commands/passwd.d.ts +0 -1
  150. package/dist/commands/passwd.js +0 -1
  151. package/dist/commands/ping.d.ts +0 -1
  152. package/dist/commands/ping.js +0 -1
  153. package/dist/commands/printf.d.ts +0 -1
  154. package/dist/commands/printf.js +0 -1
  155. package/dist/commands/ps.d.ts +0 -1
  156. package/dist/commands/ps.js +0 -1
  157. package/dist/commands/pwd.d.ts +0 -1
  158. package/dist/commands/pwd.js +0 -1
  159. package/dist/commands/python.d.ts +0 -1
  160. package/dist/commands/python.js +0 -1
  161. package/dist/commands/read.d.ts +0 -1
  162. package/dist/commands/read.js +0 -1
  163. package/dist/commands/registry.d.ts +0 -1
  164. package/dist/commands/registry.js +0 -1
  165. package/dist/commands/rm.d.ts +0 -1
  166. package/dist/commands/rm.js +0 -1
  167. package/dist/commands/runtime.d.ts +0 -1
  168. package/dist/commands/runtime.js +0 -1
  169. package/dist/commands/sed.d.ts +0 -1
  170. package/dist/commands/sed.js +0 -1
  171. package/dist/commands/seq.d.ts +0 -1
  172. package/dist/commands/seq.js +0 -1
  173. package/dist/commands/set.d.ts +0 -1
  174. package/dist/commands/set.js +0 -1
  175. package/dist/commands/sh.d.ts +0 -1
  176. package/dist/commands/sh.js +0 -1
  177. package/dist/commands/shift.d.ts +0 -1
  178. package/dist/commands/shift.js +0 -1
  179. package/dist/commands/sleep.d.ts +0 -1
  180. package/dist/commands/sleep.js +0 -1
  181. package/dist/commands/sort.d.ts +0 -1
  182. package/dist/commands/sort.js +0 -1
  183. package/dist/commands/source.d.ts +0 -1
  184. package/dist/commands/source.js +0 -1
  185. package/dist/commands/stat.d.ts +0 -1
  186. package/dist/commands/stat.js +0 -1
  187. package/dist/commands/su.d.ts +0 -1
  188. package/dist/commands/su.js +0 -1
  189. package/dist/commands/sudo.d.ts +0 -1
  190. package/dist/commands/sudo.js +0 -1
  191. package/dist/commands/tail.d.ts +0 -1
  192. package/dist/commands/tail.js +0 -1
  193. package/dist/commands/tar.d.ts +0 -1
  194. package/dist/commands/tar.js +0 -1
  195. package/dist/commands/tee.d.ts +0 -1
  196. package/dist/commands/tee.js +0 -1
  197. package/dist/commands/test.d.ts +0 -1
  198. package/dist/commands/test.js +0 -1
  199. package/dist/commands/touch.d.ts +0 -1
  200. package/dist/commands/touch.js +0 -1
  201. package/dist/commands/tr.d.ts +0 -1
  202. package/dist/commands/tr.js +0 -1
  203. package/dist/commands/tree.d.ts +0 -1
  204. package/dist/commands/tree.js +0 -1
  205. package/dist/commands/true.d.ts +0 -1
  206. package/dist/commands/true.js +0 -1
  207. package/dist/commands/type.d.ts +0 -1
  208. package/dist/commands/type.js +0 -1
  209. package/dist/commands/uname.d.ts +0 -1
  210. package/dist/commands/uname.js +0 -1
  211. package/dist/commands/uniq.d.ts +0 -1
  212. package/dist/commands/uniq.js +0 -1
  213. package/dist/commands/unset.d.ts +0 -1
  214. package/dist/commands/unset.js +0 -1
  215. package/dist/commands/uptime.d.ts +0 -1
  216. package/dist/commands/uptime.js +0 -1
  217. package/dist/commands/wc.d.ts +0 -1
  218. package/dist/commands/wc.js +0 -1
  219. package/dist/commands/wget.d.ts +0 -1
  220. package/dist/commands/wget.js +0 -1
  221. package/dist/commands/which.d.ts +0 -1
  222. package/dist/commands/which.js +0 -1
  223. package/dist/commands/who.d.ts +0 -1
  224. package/dist/commands/who.js +0 -1
  225. package/dist/commands/whoami.d.ts +0 -1
  226. package/dist/commands/whoami.js +0 -1
  227. package/dist/commands/xargs.d.ts +0 -1
  228. package/dist/commands/xargs.js +0 -1
  229. package/dist/index.d.ts +0 -1
  230. package/dist/index.js +0 -1
  231. package/dist/modules/linuxRootfs.d.ts +0 -1
  232. package/dist/modules/linuxRootfs.js +0 -1
  233. package/dist/modules/neofetch.d.ts +0 -1
  234. package/dist/modules/neofetch.js +0 -1
  235. package/dist/modules/shellInteractive.d.ts +0 -1
  236. package/dist/modules/shellInteractive.js +0 -1
  237. package/dist/modules/shellRuntime.d.ts +0 -1
  238. package/dist/modules/shellRuntime.js +0 -1
  239. package/dist/self-standalone.d.ts +0 -1
  240. package/dist/self-standalone.js +0 -1
  241. package/dist/standalone-wo-sftp.d.ts +0 -1
  242. package/dist/standalone-wo-sftp.js +0 -1
  243. package/dist/standalone.d.ts +0 -1
  244. package/dist/standalone.js +0 -1
  245. package/dist/types/commands.d.ts +0 -1
  246. package/dist/types/commands.js +0 -1
  247. package/dist/types/pipeline.d.ts +0 -1
  248. package/dist/types/pipeline.js +0 -1
  249. package/dist/types/streams.d.ts +0 -1
  250. package/dist/types/streams.js +0 -1
  251. package/dist/types/vfs.d.ts +0 -1
  252. package/dist/types/vfs.js +0 -1
  253. package/dist/utils/expand.d.ts +0 -1
  254. package/dist/utils/expand.js +0 -1
  255. package/dist/utils/perfLogger.d.ts +0 -1
  256. package/dist/utils/perfLogger.js +0 -1
  257. package/dist/utils/tokenize.d.ts +0 -1
  258. package/dist/utils/tokenize.js +0 -1
  259. package/dist/utils/vfsDiff.d.ts +0 -1
  260. package/dist/utils/vfsDiff.js +0 -1
  261. package/{builds/self-standalone.mjs → docs/app.js} +212 -225
  262. package/docs/classes/HoneyPot.html +17 -17
  263. package/docs/classes/IdleManager.html +8 -8
  264. package/docs/classes/SshClient.html +34 -34
  265. package/docs/classes/VirtualFileSystem.html +38 -38
  266. package/docs/classes/VirtualPackageManager.html +19 -19
  267. package/docs/classes/VirtualSftpServer.html +3 -3
  268. package/docs/classes/VirtualShell.html +41 -40
  269. package/docs/classes/VirtualSshServer.html +8 -8
  270. package/docs/classes/VirtualUserManager.html +32 -32
  271. package/docs/demo.html +82 -0
  272. package/docs/functions/assertDiff.html +3 -3
  273. package/docs/functions/diffSnapshots.html +5 -5
  274. package/docs/functions/formatDiff.html +3 -3
  275. package/docs/functions/getArg.html +3 -3
  276. package/docs/functions/getFlag.html +2 -2
  277. package/docs/functions/ifFlag.html +2 -2
  278. package/docs/hierarchy.html +1 -1
  279. package/docs/index.html +47 -21
  280. package/docs/interfaces/AuditLogEntry.html +3 -3
  281. package/docs/interfaces/CommandContext.html +13 -13
  282. package/docs/interfaces/CommandResult.html +13 -13
  283. package/docs/interfaces/ExecStream.html +6 -6
  284. package/docs/interfaces/HoneyPotStats.html +3 -3
  285. package/docs/interfaces/IdleManagerOptions.html +3 -3
  286. package/docs/interfaces/InstalledPackage.html +11 -11
  287. package/docs/interfaces/NanoEditorSession.html +5 -5
  288. package/docs/interfaces/PackageDefinition.html +14 -14
  289. package/docs/interfaces/PackageFile.html +5 -5
  290. package/docs/interfaces/PasswordChallenge.html +9 -9
  291. package/docs/interfaces/RemoveOptions.html +3 -3
  292. package/docs/interfaces/ShellEnv.html +4 -4
  293. package/docs/interfaces/ShellModule.html +8 -8
  294. package/docs/interfaces/ShellProperties.html +5 -5
  295. package/docs/interfaces/ShellStream.html +7 -7
  296. package/docs/interfaces/SudoChallenge.html +9 -9
  297. package/docs/interfaces/VfsBaseNode.html +7 -7
  298. package/docs/interfaces/VfsDiff.html +7 -7
  299. package/docs/interfaces/VfsDiffEntry.html +4 -4
  300. package/docs/interfaces/VfsDiffModified.html +6 -6
  301. package/docs/interfaces/VfsDirectoryNode.html +8 -8
  302. package/docs/interfaces/VfsFileNode.html +9 -9
  303. package/docs/interfaces/VfsOptions.html +6 -6
  304. package/docs/interfaces/VfsSnapshot.html +3 -3
  305. package/docs/interfaces/VfsSnapshotBaseNode.html +4 -4
  306. package/docs/interfaces/VfsSnapshotDirectoryNode.html +5 -5
  307. package/docs/interfaces/VfsSnapshotFileNode.html +6 -6
  308. package/docs/interfaces/VirtualActiveSession.html +7 -7
  309. package/docs/interfaces/VirtualSftpServerOptions.html +3 -3
  310. package/docs/interfaces/VirtualShellVfsLike.html +4 -4
  311. package/docs/interfaces/VirtualShellVfsOptions.html +3 -3
  312. package/docs/interfaces/WriteFileOptions.html +4 -4
  313. package/docs/modules.html +1 -1
  314. package/docs/types/ArgParseOptions.html +3 -3
  315. package/docs/types/CommandMode.html +2 -2
  316. package/docs/types/CommandOutcome.html +2 -2
  317. package/docs/types/IdleState.html +1 -1
  318. package/docs/types/VfsNodeStats.html +2 -2
  319. package/docs/types/VfsNodeType.html +2 -2
  320. package/docs/types/VfsPersistenceMode.html +2 -2
  321. package/docs/types/VfsSnapshotNode.html +2 -2
  322. package/examples/app.js +1755 -28
  323. package/examples/app.ts +299 -0
  324. package/examples/build.js +27 -0
  325. package/examples/demo.html +33 -0
  326. package/examples/index.html +68 -13
  327. package/package.json +7 -5
  328. package/polyfills/buffer.js +117 -0
  329. package/polyfills/node_crypto/index.js +167 -7
  330. package/polyfills/node_fs/index.js +202 -8
  331. package/polyfills/node_path/index.js +23 -9
  332. package/polyfills/process.js +14 -0
  333. package/polyfills/ssh2/index.js +75 -0
  334. package/scripts/build-all.mjs +226 -0
  335. package/scripts/build-names.mjs +43 -0
  336. package/src/VirtualFileSystem/journal.ts +3 -1
  337. package/src/VirtualPackageManager/index.ts +6 -7
  338. package/src/VirtualShell/index.ts +5 -2
  339. package/tsconfig.json +6 -3
  340. package/typedoc.json +4 -2
  341. package/builds/web-full-api.min.js +0 -12
  342. package/builds/web.min.js +0 -12
  343. package/dist/Honeypot/index.d.ts.map +0 -1
  344. package/dist/Honeypot/index.js.map +0 -1
  345. package/dist/SSHClient/index.d.ts.map +0 -1
  346. package/dist/SSHClient/index.js.map +0 -1
  347. package/dist/SSHMimic/exec.d.ts.map +0 -1
  348. package/dist/SSHMimic/exec.js.map +0 -1
  349. package/dist/SSHMimic/executor.d.ts.map +0 -1
  350. package/dist/SSHMimic/executor.js.map +0 -1
  351. package/dist/SSHMimic/hostKey.d.ts.map +0 -1
  352. package/dist/SSHMimic/hostKey.js.map +0 -1
  353. package/dist/SSHMimic/index.d.ts.map +0 -1
  354. package/dist/SSHMimic/index.js.map +0 -1
  355. package/dist/SSHMimic/loginBanner.d.ts.map +0 -1
  356. package/dist/SSHMimic/loginBanner.js.map +0 -1
  357. package/dist/SSHMimic/loginFormat.d.ts.map +0 -1
  358. package/dist/SSHMimic/loginFormat.js.map +0 -1
  359. package/dist/SSHMimic/prompt.d.ts.map +0 -1
  360. package/dist/SSHMimic/prompt.js.map +0 -1
  361. package/dist/SSHMimic/sftp.d.ts.map +0 -1
  362. package/dist/SSHMimic/sftp.js.map +0 -1
  363. package/dist/VirtualFileSystem/binaryPack.d.ts.map +0 -1
  364. package/dist/VirtualFileSystem/binaryPack.js.map +0 -1
  365. package/dist/VirtualFileSystem/index.d.ts.map +0 -1
  366. package/dist/VirtualFileSystem/index.js.map +0 -1
  367. package/dist/VirtualFileSystem/internalTypes.d.ts.map +0 -1
  368. package/dist/VirtualFileSystem/internalTypes.js.map +0 -1
  369. package/dist/VirtualFileSystem/journal.d.ts.map +0 -1
  370. package/dist/VirtualFileSystem/journal.js.map +0 -1
  371. package/dist/VirtualFileSystem/path.d.ts.map +0 -1
  372. package/dist/VirtualFileSystem/path.js.map +0 -1
  373. package/dist/VirtualPackageManager/index.d.ts.map +0 -1
  374. package/dist/VirtualPackageManager/index.js.map +0 -1
  375. package/dist/VirtualShell/idleManager.d.ts.map +0 -1
  376. package/dist/VirtualShell/idleManager.js.map +0 -1
  377. package/dist/VirtualShell/index.d.ts.map +0 -1
  378. package/dist/VirtualShell/index.js.map +0 -1
  379. package/dist/VirtualShell/shell.d.ts.map +0 -1
  380. package/dist/VirtualShell/shell.js.map +0 -1
  381. package/dist/VirtualShell/shellParser.d.ts.map +0 -1
  382. package/dist/VirtualShell/shellParser.js.map +0 -1
  383. package/dist/VirtualUserManager/index.d.ts.map +0 -1
  384. package/dist/VirtualUserManager/index.js.map +0 -1
  385. package/dist/commands/adduser.d.ts.map +0 -1
  386. package/dist/commands/adduser.js.map +0 -1
  387. package/dist/commands/alias.d.ts.map +0 -1
  388. package/dist/commands/alias.js.map +0 -1
  389. package/dist/commands/apt.d.ts.map +0 -1
  390. package/dist/commands/apt.js.map +0 -1
  391. package/dist/commands/awk.d.ts.map +0 -1
  392. package/dist/commands/awk.js.map +0 -1
  393. package/dist/commands/base64.d.ts.map +0 -1
  394. package/dist/commands/base64.js.map +0 -1
  395. package/dist/commands/cat.d.ts.map +0 -1
  396. package/dist/commands/cat.js.map +0 -1
  397. package/dist/commands/cd.d.ts.map +0 -1
  398. package/dist/commands/cd.js.map +0 -1
  399. package/dist/commands/chmod.d.ts.map +0 -1
  400. package/dist/commands/chmod.js.map +0 -1
  401. package/dist/commands/clear.d.ts.map +0 -1
  402. package/dist/commands/clear.js.map +0 -1
  403. package/dist/commands/command-helpers.d.ts.map +0 -1
  404. package/dist/commands/command-helpers.js.map +0 -1
  405. package/dist/commands/cp.d.ts.map +0 -1
  406. package/dist/commands/cp.js.map +0 -1
  407. package/dist/commands/curl.d.ts.map +0 -1
  408. package/dist/commands/curl.js.map +0 -1
  409. package/dist/commands/cut.d.ts.map +0 -1
  410. package/dist/commands/cut.js.map +0 -1
  411. package/dist/commands/date.d.ts.map +0 -1
  412. package/dist/commands/date.js.map +0 -1
  413. package/dist/commands/declare.d.ts.map +0 -1
  414. package/dist/commands/declare.js.map +0 -1
  415. package/dist/commands/deluser.d.ts.map +0 -1
  416. package/dist/commands/deluser.js.map +0 -1
  417. package/dist/commands/df.d.ts.map +0 -1
  418. package/dist/commands/df.js.map +0 -1
  419. package/dist/commands/diff.d.ts.map +0 -1
  420. package/dist/commands/diff.js.map +0 -1
  421. package/dist/commands/dpkg.d.ts.map +0 -1
  422. package/dist/commands/dpkg.js.map +0 -1
  423. package/dist/commands/du.d.ts.map +0 -1
  424. package/dist/commands/du.js.map +0 -1
  425. package/dist/commands/echo.d.ts.map +0 -1
  426. package/dist/commands/echo.js.map +0 -1
  427. package/dist/commands/env.d.ts.map +0 -1
  428. package/dist/commands/env.js.map +0 -1
  429. package/dist/commands/exit.d.ts.map +0 -1
  430. package/dist/commands/exit.js.map +0 -1
  431. package/dist/commands/export.d.ts.map +0 -1
  432. package/dist/commands/export.js.map +0 -1
  433. package/dist/commands/find.d.ts.map +0 -1
  434. package/dist/commands/find.js.map +0 -1
  435. package/dist/commands/free.d.ts.map +0 -1
  436. package/dist/commands/free.js.map +0 -1
  437. package/dist/commands/grep.d.ts.map +0 -1
  438. package/dist/commands/grep.js.map +0 -1
  439. package/dist/commands/groups.d.ts.map +0 -1
  440. package/dist/commands/groups.js.map +0 -1
  441. package/dist/commands/gzip.d.ts.map +0 -1
  442. package/dist/commands/gzip.js.map +0 -1
  443. package/dist/commands/head.d.ts.map +0 -1
  444. package/dist/commands/head.js.map +0 -1
  445. package/dist/commands/help.d.ts.map +0 -1
  446. package/dist/commands/help.js.map +0 -1
  447. package/dist/commands/helpers.d.ts.map +0 -1
  448. package/dist/commands/helpers.js.map +0 -1
  449. package/dist/commands/history.d.ts.map +0 -1
  450. package/dist/commands/history.js.map +0 -1
  451. package/dist/commands/hostname.d.ts.map +0 -1
  452. package/dist/commands/hostname.js.map +0 -1
  453. package/dist/commands/htop.d.ts.map +0 -1
  454. package/dist/commands/htop.js.map +0 -1
  455. package/dist/commands/id.d.ts.map +0 -1
  456. package/dist/commands/id.js.map +0 -1
  457. package/dist/commands/index.d.ts.map +0 -1
  458. package/dist/commands/index.js.map +0 -1
  459. package/dist/commands/kill.d.ts.map +0 -1
  460. package/dist/commands/kill.js.map +0 -1
  461. package/dist/commands/ln.d.ts.map +0 -1
  462. package/dist/commands/ln.js.map +0 -1
  463. package/dist/commands/ls.d.ts.map +0 -1
  464. package/dist/commands/ls.js.map +0 -1
  465. package/dist/commands/lsb-release.d.ts.map +0 -1
  466. package/dist/commands/lsb-release.js.map +0 -1
  467. package/dist/commands/man.d.ts.map +0 -1
  468. package/dist/commands/man.js.map +0 -1
  469. package/dist/commands/manuals-bundle.d.ts.map +0 -1
  470. package/dist/commands/manuals-bundle.js.map +0 -1
  471. package/dist/commands/mkdir.d.ts.map +0 -1
  472. package/dist/commands/mkdir.js.map +0 -1
  473. package/dist/commands/mv.d.ts.map +0 -1
  474. package/dist/commands/mv.js.map +0 -1
  475. package/dist/commands/nano.d.ts.map +0 -1
  476. package/dist/commands/nano.js.map +0 -1
  477. package/dist/commands/neofetch.d.ts.map +0 -1
  478. package/dist/commands/neofetch.js.map +0 -1
  479. package/dist/commands/node.d.ts.map +0 -1
  480. package/dist/commands/node.js.map +0 -1
  481. package/dist/commands/npm.d.ts.map +0 -1
  482. package/dist/commands/npm.js.map +0 -1
  483. package/dist/commands/passwd.d.ts.map +0 -1
  484. package/dist/commands/passwd.js.map +0 -1
  485. package/dist/commands/ping.d.ts.map +0 -1
  486. package/dist/commands/ping.js.map +0 -1
  487. package/dist/commands/printf.d.ts.map +0 -1
  488. package/dist/commands/printf.js.map +0 -1
  489. package/dist/commands/ps.d.ts.map +0 -1
  490. package/dist/commands/ps.js.map +0 -1
  491. package/dist/commands/pwd.d.ts.map +0 -1
  492. package/dist/commands/pwd.js.map +0 -1
  493. package/dist/commands/python.d.ts.map +0 -1
  494. package/dist/commands/python.js.map +0 -1
  495. package/dist/commands/read.d.ts.map +0 -1
  496. package/dist/commands/read.js.map +0 -1
  497. package/dist/commands/registry.d.ts.map +0 -1
  498. package/dist/commands/registry.js.map +0 -1
  499. package/dist/commands/rm.d.ts.map +0 -1
  500. package/dist/commands/rm.js.map +0 -1
  501. package/dist/commands/runtime.d.ts.map +0 -1
  502. package/dist/commands/runtime.js.map +0 -1
  503. package/dist/commands/sed.d.ts.map +0 -1
  504. package/dist/commands/sed.js.map +0 -1
  505. package/dist/commands/seq.d.ts.map +0 -1
  506. package/dist/commands/seq.js.map +0 -1
  507. package/dist/commands/set.d.ts.map +0 -1
  508. package/dist/commands/set.js.map +0 -1
  509. package/dist/commands/sh.d.ts.map +0 -1
  510. package/dist/commands/sh.js.map +0 -1
  511. package/dist/commands/shift.d.ts.map +0 -1
  512. package/dist/commands/shift.js.map +0 -1
  513. package/dist/commands/sleep.d.ts.map +0 -1
  514. package/dist/commands/sleep.js.map +0 -1
  515. package/dist/commands/sort.d.ts.map +0 -1
  516. package/dist/commands/sort.js.map +0 -1
  517. package/dist/commands/source.d.ts.map +0 -1
  518. package/dist/commands/source.js.map +0 -1
  519. package/dist/commands/stat.d.ts.map +0 -1
  520. package/dist/commands/stat.js.map +0 -1
  521. package/dist/commands/su.d.ts.map +0 -1
  522. package/dist/commands/su.js.map +0 -1
  523. package/dist/commands/sudo.d.ts.map +0 -1
  524. package/dist/commands/sudo.js.map +0 -1
  525. package/dist/commands/tail.d.ts.map +0 -1
  526. package/dist/commands/tail.js.map +0 -1
  527. package/dist/commands/tar.d.ts.map +0 -1
  528. package/dist/commands/tar.js.map +0 -1
  529. package/dist/commands/tee.d.ts.map +0 -1
  530. package/dist/commands/tee.js.map +0 -1
  531. package/dist/commands/test.d.ts.map +0 -1
  532. package/dist/commands/test.js.map +0 -1
  533. package/dist/commands/touch.d.ts.map +0 -1
  534. package/dist/commands/touch.js.map +0 -1
  535. package/dist/commands/tr.d.ts.map +0 -1
  536. package/dist/commands/tr.js.map +0 -1
  537. package/dist/commands/tree.d.ts.map +0 -1
  538. package/dist/commands/tree.js.map +0 -1
  539. package/dist/commands/true.d.ts.map +0 -1
  540. package/dist/commands/true.js.map +0 -1
  541. package/dist/commands/type.d.ts.map +0 -1
  542. package/dist/commands/type.js.map +0 -1
  543. package/dist/commands/uname.d.ts.map +0 -1
  544. package/dist/commands/uname.js.map +0 -1
  545. package/dist/commands/uniq.d.ts.map +0 -1
  546. package/dist/commands/uniq.js.map +0 -1
  547. package/dist/commands/unset.d.ts.map +0 -1
  548. package/dist/commands/unset.js.map +0 -1
  549. package/dist/commands/uptime.d.ts.map +0 -1
  550. package/dist/commands/uptime.js.map +0 -1
  551. package/dist/commands/wc.d.ts.map +0 -1
  552. package/dist/commands/wc.js.map +0 -1
  553. package/dist/commands/wget.d.ts.map +0 -1
  554. package/dist/commands/wget.js.map +0 -1
  555. package/dist/commands/which.d.ts.map +0 -1
  556. package/dist/commands/which.js.map +0 -1
  557. package/dist/commands/who.d.ts.map +0 -1
  558. package/dist/commands/who.js.map +0 -1
  559. package/dist/commands/whoami.d.ts.map +0 -1
  560. package/dist/commands/whoami.js.map +0 -1
  561. package/dist/commands/xargs.d.ts.map +0 -1
  562. package/dist/commands/xargs.js.map +0 -1
  563. package/dist/index.d.ts.map +0 -1
  564. package/dist/index.js.map +0 -1
  565. package/dist/modules/linuxRootfs.d.ts.map +0 -1
  566. package/dist/modules/linuxRootfs.js.map +0 -1
  567. package/dist/modules/neofetch.d.ts.map +0 -1
  568. package/dist/modules/neofetch.js.map +0 -1
  569. package/dist/modules/shellInteractive.d.ts.map +0 -1
  570. package/dist/modules/shellInteractive.js.map +0 -1
  571. package/dist/modules/shellRuntime.d.ts.map +0 -1
  572. package/dist/modules/shellRuntime.js.map +0 -1
  573. package/dist/self-standalone.d.ts.map +0 -1
  574. package/dist/self-standalone.js.map +0 -1
  575. package/dist/standalone-wo-sftp.d.ts.map +0 -1
  576. package/dist/standalone-wo-sftp.js.map +0 -1
  577. package/dist/standalone.d.ts.map +0 -1
  578. package/dist/standalone.js.map +0 -1
  579. package/dist/types/commands.d.ts.map +0 -1
  580. package/dist/types/commands.js.map +0 -1
  581. package/dist/types/pipeline.d.ts.map +0 -1
  582. package/dist/types/pipeline.js.map +0 -1
  583. package/dist/types/streams.d.ts.map +0 -1
  584. package/dist/types/streams.js.map +0 -1
  585. package/dist/types/vfs.d.ts.map +0 -1
  586. package/dist/types/vfs.js.map +0 -1
  587. package/dist/utils/expand.d.ts.map +0 -1
  588. package/dist/utils/expand.js.map +0 -1
  589. package/dist/utils/perfLogger.d.ts.map +0 -1
  590. package/dist/utils/perfLogger.js.map +0 -1
  591. package/dist/utils/tokenize.d.ts.map +0 -1
  592. package/dist/utils/tokenize.js.map +0 -1
  593. package/dist/utils/vfsDiff.d.ts.map +0 -1
  594. package/dist/utils/vfsDiff.js.map +0 -1
  595. package/dist/web-api.d.ts +0 -26
  596. package/dist/web-api.d.ts.map +0 -1
  597. package/dist/web-api.js +0 -47
  598. package/dist/web-api.js.map +0 -1
  599. package/dist/web-full.d.ts +0 -4
  600. package/dist/web-full.d.ts.map +0 -1
  601. package/dist/web-full.js +0 -9
  602. package/dist/web-full.js.map +0 -1
  603. package/dist/web.d.ts +0 -108
  604. package/dist/web.d.ts.map +0 -1
  605. package/dist/web.js +0 -774
  606. package/dist/web.js.map +0 -1
  607. package/examples/app-iife.js +0 -58
  608. package/examples/index-cf.html +0 -27
  609. package/examples/web-iife.min.js +0 -13
  610. package/examples/web.min.js +0 -12
  611. package/src/web-api.ts +0 -62
  612. package/src/web-full.ts +0 -11
  613. package/src/web.ts +0 -930
  614. package/tests/web.test.ts +0 -182
package/docs/index.html CHANGED
@@ -1,11 +1,12 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>typescript-virtual-container - v1.5.0</title><meta name="description" content="Documentation for typescript-virtual-container"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script><script async src="assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index.html" class="title">typescript-virtual-container - v1.5.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>typescript-virtual-container - v1.5.0</h1></div><div class="tsd-panel tsd-typography"><h1 id="_" class="tsd-anchor-link"><code>typescript-virtual-container</code><a href="#_" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>typescript-virtual-container - v1.5.1</title><meta name="description" content="Documentation for typescript-virtual-container"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script><script async src="assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index" class="title">typescript-virtual-container - v1.5.1</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>typescript-virtual-container - v1.5.1</h1></div><div class="tsd-panel tsd-typography"><h1 id="_" class="tsd-anchor-link"><code>typescript-virtual-container</code><a href="#_" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1>
2
2
  <blockquote>
3
3
  <p>A complete virtual Linux environment in pure TypeScript — runs as an SSH/SFTP server, a browser-based web shell, or a standalone CLI. Ships with a realistic Linux rootfs, a virtual package manager, a full shell interpreter, and a typed programmatic API for testing, automation, honeypots, and embedded shell experiences.</p>
4
4
  </blockquote>
5
5
  <p><a href="https://www.npmjs.com/package/typescript-virtual-container"><img src="https://badge.fury.io/js/typescript-virtual-container.svg" alt="npm version"></a>
6
6
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
7
7
  <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.x-3178C6.svg?logo=typescript&amp;logoColor=white" alt="TypeScript"></a>
8
- <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/runtime-Node.js%20%7C%20Bun-43853D.svg" alt="Runtime"></a></p>
8
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/runtime-Node.js%20%7C%20Bun-43853D.svg" alt="Runtime"></a>
9
+ <a href="https://itsrealfortune.fr/typescript-virtual-container/demo"><img src="https://img.shields.io/badge/demo-live-brightgreen.svg" alt="Live Demo"></a></p>
9
10
  <hr>
10
11
  <h2 id="table-of-contents" class="tsd-anchor-link">Table of Contents<a href="#table-of-contents" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
11
12
  <ul>
@@ -56,6 +57,7 @@
56
57
  </ul>
57
58
  <hr>
58
59
  <h2 id="three-ways-to-run" class="tsd-anchor-link">Three ways to run<a href="#three-ways-to-run" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
60
+ <!-- BUILD:mode-table -->
59
61
  <table>
60
62
  <thead>
61
63
  <tr>
@@ -72,16 +74,17 @@
72
74
  </tr>
73
75
  <tr>
74
76
  <td><strong>Web shell</strong></td>
75
- <td><code>builds/web.min.js</code> / <code>builds/web-full-api.min.js</code> (ESM)</td>
77
+ <td><code>builds/fortune-nyx-v1.5.1-web.min.js</code> (ESM)</td>
76
78
  <td>Embedded terminals, interactive tutorials, browser demos</td>
77
79
  </tr>
78
80
  <tr>
79
81
  <td><strong>Standalone CLI</strong></td>
80
- <td><code>builds/self-standalone.mjs</code> (single file)</td>
82
+ <td><code>builds/fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</code> (single file)</td>
81
83
  <td>Local shell, one-liner demos, no install required</td>
82
84
  </tr>
83
85
  </tbody>
84
86
  </table>
87
+ <!-- /BUILD:mode-table -->
85
88
  <p>All three modes share the same core: a pure in-memory VFS, a real shell interpreter, a virtual package manager, and a typed programmatic API.</p>
86
89
  <hr>
87
90
  <h2 id="get-started" class="tsd-anchor-link">Get Started<a href="#get-started" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2>
@@ -90,16 +93,29 @@
90
93
  </code><button type="button">Copy</button></pre>
91
94
 
92
95
  <h3 id="try-instantly-zero-install" class="tsd-anchor-link">Try instantly (zero install)<a href="#try-instantly-zero-install" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
93
- <pre><code class="bash"><span class="hl-3"># Interactive local shell — persists VFS in .vfs/ in the current directory</span><br/><span class="hl-0">curl</span><span class="hl-1"> </span><span class="hl-4">-s</span><span class="hl-1"> </span><span class="hl-2">https://raw.githubusercontent.com/itsrealfortune/typescript-virtual-container/refs/heads/main/builds/self-standalone.mjs</span><span class="hl-1"> </span><span class="hl-4">-o</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">rm</span><span class="hl-1"> </span><span class="hl-4">-f</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><br/><br/><span class="hl-3"># SSH server (connect with any SSH client on port 2222)</span><br/><span class="hl-0">curl</span><span class="hl-1"> </span><span class="hl-4">-s</span><span class="hl-1"> </span><span class="hl-2">https://raw.githubusercontent.com/itsrealfortune/typescript-virtual-container/refs/heads/main/builds/standalone.js</span><span class="hl-1"> </span><span class="hl-4">-o</span><span class="hl-1"> </span><span class="hl-2">standalone.js</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">standalone.js</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">rm</span><span class="hl-1"> </span><span class="hl-4">-f</span><span class="hl-1"> </span><span class="hl-2">standalone.js</span><br/><br/><span class="hl-3"># SSH server without SFTP (lighter build)</span><br/><span class="hl-0">curl</span><span class="hl-1"> </span><span class="hl-4">-s</span><span class="hl-1"> </span><span class="hl-2">https://raw.githubusercontent.com/itsrealfortune/typescript-virtual-container/refs/heads/main/builds/standalone-wo-sftp.js</span><span class="hl-1"> </span><span class="hl-4">-o</span><span class="hl-1"> </span><span class="hl-2">standalone.js</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">standalone.js</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">rm</span><span class="hl-1"> </span><span class="hl-4">-f</span><span class="hl-1"> </span><span class="hl-2">standalone.js</span>
96
+ <!-- BUILD:curl-start -->
97
+ <h4 id="interactivea-local-shell-persists-vfs-in-vfs-in-the-current-directory" class="tsd-anchor-link">Interactivea local shell — persists VFS in .vfs/ in the current directory<a href="#interactivea-local-shell-persists-vfs-in-vfs-in-the-current-directory" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4>
98
+ <pre><code class="bash"><span class="hl-0">curl</span><span class="hl-1"> </span><span class="hl-4">-s</span><span class="hl-1"> </span><span class="hl-2">https://raw.githubusercontent.com/itsrealfortune/typescript-virtual-container/refs/heads/main/builds/fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span><span class="hl-1"> </span><span class="hl-4">-o</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span>
94
99
  </code><button type="button">Copy</button></pre>
95
100
 
101
+ <h4 id="ssh-server-connect-with-any-ssh-client-on-port-2222" class="tsd-anchor-link">SSH server (connect with any SSH client on port 2222)<a href="#ssh-server-connect-with-any-ssh-client-on-port-2222" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4>
102
+ <pre><code class="bash"><span class="hl-0">curl</span><span class="hl-1"> </span><span class="hl-4">-s</span><span class="hl-1"> </span><span class="hl-2">https://raw.githubusercontent.com/itsrealfortune/typescript-virtual-container/refs/heads/main/builds/fortune-nyx-v1.5.1-ssh.cjs</span><span class="hl-1"> </span><span class="hl-4">-o</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-ssh.cjs</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-ssh.cjs</span>
103
+ </code><button type="button">Copy</button></pre>
104
+
105
+ <h4 id="ssh-server-without-sftp-lighter-build" class="tsd-anchor-link">SSH server without SFTP (lighter build)<a href="#ssh-server-without-sftp-lighter-build" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4>
106
+ <pre><code class="bash"><span class="hl-0">curl</span><span class="hl-1"> </span><span class="hl-4">-s</span><span class="hl-1"> </span><span class="hl-2">https://raw.githubusercontent.com/itsrealfortune/typescript-virtual-container/refs/heads/main/builds/fortune-nyx-v1.5.1-ssh-nosftp.js</span><span class="hl-1"> </span><span class="hl-4">-o</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-ssh-nosftp.js</span><span class="hl-1"> &amp;&amp; </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-ssh-nosftp.js</span>
107
+ </code><button type="button">Copy</button></pre>
108
+
109
+ <!-- /BUILD:curl-start -->
96
110
  <div class="tsd-alert tsd-alert-note"><div class="tsd-alert-title"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><use href="assets/icons.svg#icon-alertNote"></use></svg><span>Note</span></div><p>
97
111
  The standalone builds are intended for quick demos and testing. For production use, it's recommended to install the package and import the relevant classes directly in your codebase for better performance, stability, and security.</p>
98
112
  </div>
99
- <p><strong><code>self-standalone.mjs</code> options:</strong></p>
100
- <pre><code class="bash"><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><span class="hl-1"> </span><span class="hl-3"># boot as root</span><br/><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><span class="hl-1"> </span><span class="hl-4">--user</span><span class="hl-1"> </span><span class="hl-2">alice</span><span class="hl-1"> </span><span class="hl-3"># boot as alice (prompts for password if set)</span><br/><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><span class="hl-1"> </span><span class="hl-4">--user=alice</span><span class="hl-1"> </span><span class="hl-3"># same, inline form</span><br/><span class="hl-5">SSH_MIMIC_HOSTNAME</span><span class="hl-1">=</span><span class="hl-2">my-box</span><span class="hl-1"> </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">self-standalone.mjs</span><span class="hl-1"> </span><span class="hl-3"># custom hostname</span>
113
+ <!-- BUILD:selfStandalone-options -->
114
+ <p><strong><code>fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</code> options:</strong></p>
115
+ <pre><code class="bash"><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span><span class="hl-1"> </span><span class="hl-3"># boot as root</span><br/><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span><span class="hl-1"> </span><span class="hl-4">--user</span><span class="hl-1"> </span><span class="hl-2">alice</span><span class="hl-1"> </span><span class="hl-3"># boot as alice (prompts for password if set)</span><br/><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span><span class="hl-1"> </span><span class="hl-4">--user=alice</span><span class="hl-1"> </span><span class="hl-3"># same, inline form</span><br/><span class="hl-5">SSH_MIMIC_HOSTNAME</span><span class="hl-1">=</span><span class="hl-2">my-box</span><span class="hl-1"> </span><span class="hl-0">node</span><span class="hl-1"> </span><span class="hl-2">fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</span><span class="hl-1"> </span><span class="hl-3"># custom hostname</span>
101
116
  </code><button type="button">Copy</button></pre>
102
117
 
118
+ <!-- /BUILD:selfStandalone-options -->
103
119
  <p>The VFS is persisted automatically to <code>.vfs/vfs-snapshot.vfsb</code> in the current directory — state survives between runs. Delete <code>.vfs/</code> to start fresh.</p>
104
120
  <p>The shell shows a login banner and <code>Last login:</code> timestamp on each start.</p>
105
121
  <h3 id="ssh-server" class="tsd-anchor-link">SSH server<a href="#ssh-server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
@@ -107,7 +123,11 @@ The standalone builds are intended for quick demos and testing. For production u
107
123
  </code><button type="button">Copy</button></pre>
108
124
 
109
125
  <h3 id="web-shell-browser" class="tsd-anchor-link">Web shell (browser)<a href="#web-shell-browser" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
126
+ <blockquote>
127
+ <p><strong><a href="https://itsrealfortune.fr/typescript-virtual-container/demo">🖥 Try the live demo →</a></strong></p>
128
+ </blockquote>
110
129
  <p>Two browser bundles are available:</p>
130
+ <!-- BUILD:web-table -->
111
131
  <table>
112
132
  <thead>
113
133
  <tr>
@@ -119,35 +139,35 @@ The standalone builds are intended for quick demos and testing. For production u
119
139
  </thead>
120
140
  <tbody>
121
141
  <tr>
122
- <td><code>builds/web.min.js</code></td>
142
+ <td><code>builds/fortune-nyx-v1.5.1-web.min.js</code></td>
123
143
  <td>ESM</td>
124
144
  <td><code>createWebShell()</code></td>
125
145
  <td>Embedded terminals, modern bundlers</td>
126
146
  </tr>
127
- <tr>
128
- <td><code>builds/web-full-api.min.js</code></td>
129
- <td>ESM</td>
130
- <td><code>createVirtualShellShim()</code></td>
131
- <td>Full <code>VirtualShell</code>-like API in the browser</td>
132
- </tr>
133
147
  </tbody>
134
148
  </table>
149
+ <!-- /BUILD:web-table -->
135
150
  <p>Both bundles persist the VFS in <strong>IndexedDB</strong> — state survives page reloads.</p>
136
151
  <pre><code class="bash"><span class="hl-0">bun</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">web-build</span><span class="hl-1"> </span><span class="hl-3"># → builds/web.min.js + examples/web.min.js</span><br/><span class="hl-0">bun</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">web-full-build</span><span class="hl-1"> </span><span class="hl-3"># → builds/web-full-api.min.js</span><br/><span class="hl-0">bun</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">build-all</span><span class="hl-1"> </span><span class="hl-3"># rebuild everything</span>
137
152
  </code><button type="button">Copy</button></pre>
138
153
 
139
- <p><strong><code>web.min.js</code></strong> — lightweight shell with IndexedDB VFS:</p>
140
- <pre><code class="html"><span class="hl-9">&lt;</span><span class="hl-10">script</span><span class="hl-11"> </span><span class="hl-12">type</span><span class="hl-11">=</span><span class="hl-13">&quot;module&quot;</span><span class="hl-9">&gt;</span><br/><span class="hl-11"> </span><span class="hl-6">import</span><span class="hl-11"> { </span><span class="hl-5">createWebShell</span><span class="hl-11"> } </span><span class="hl-6">from</span><span class="hl-11"> </span><span class="hl-2">&quot;./builds/web.min.js&quot;</span><span class="hl-11">;</span><br/><br/><span class="hl-11"> </span><span class="hl-4">const</span><span class="hl-11"> </span><span class="hl-7">shell</span><span class="hl-11"> </span><span class="hl-1">=</span><span class="hl-11"> </span><span class="hl-0">createWebShell</span><span class="hl-11">(</span><span class="hl-2">&quot;web-vm&quot;</span><span class="hl-11">, {</span><br/><span class="hl-11"> </span><span class="hl-5">vfs:</span><span class="hl-11"> { </span><span class="hl-5">databaseName:</span><span class="hl-11"> </span><span class="hl-2">&quot;virtual-env-js&quot;</span><span class="hl-11">, </span><span class="hl-5">storeName:</span><span class="hl-11"> </span><span class="hl-2">&quot;vfs&quot;</span><span class="hl-11"> },</span><br/><span class="hl-11"> });</span><br/><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">ensureInitialized</span><span class="hl-11">();</span><br/><br/><span class="hl-11"> </span><span class="hl-4">const</span><span class="hl-11"> </span><span class="hl-7">out</span><span class="hl-11"> </span><span class="hl-1">=</span><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">executeCommandLine</span><span class="hl-11">(</span><span class="hl-2">&quot;ls /etc &amp;&amp; echo hello&quot;</span><span class="hl-11">);</span><br/><span class="hl-11"> </span><span class="hl-5">console</span><span class="hl-11">.</span><span class="hl-0">log</span><span class="hl-11">(</span><span class="hl-5">out</span><span class="hl-11">.</span><span class="hl-5">stdout</span><span class="hl-11">);</span><br/><span class="hl-9">&lt;/</span><span class="hl-10">script</span><span class="hl-9">&gt;</span>
154
+ <!-- BUILD:web-options -->
155
+ <p><strong><code>fortune-nyx-v1.5.1-web.min.js</code></strong> lightweight shell with IndexedDB VFS:</p>
156
+ <pre><code class="html"><span class="hl-9">&lt;</span><span class="hl-10">script</span><span class="hl-11"> </span><span class="hl-12">type</span><span class="hl-11">=</span><span class="hl-13">&quot;module&quot;</span><span class="hl-9">&gt;</span><br/><span class="hl-11"> </span><span class="hl-6">import</span><span class="hl-11"> { </span><span class="hl-5">createWebShell</span><span class="hl-11"> } </span><span class="hl-6">from</span><span class="hl-11"> </span><span class="hl-2">&quot;./builds/fortune-nyx-v1.5.1-web.min.js&quot;</span><span class="hl-11">;</span><br/><br/><span class="hl-11"> </span><span class="hl-4">const</span><span class="hl-11"> </span><span class="hl-7">shell</span><span class="hl-11"> </span><span class="hl-1">=</span><span class="hl-11"> </span><span class="hl-0">createWebShell</span><span class="hl-11">(</span><span class="hl-2">&quot;web-vm&quot;</span><span class="hl-11">, {</span><br/><span class="hl-11"> </span><span class="hl-5">vfs:</span><span class="hl-11"> { </span><span class="hl-5">databaseName:</span><span class="hl-11"> </span><span class="hl-2">&quot;virtual-env-js&quot;</span><span class="hl-11">, </span><span class="hl-5">storeName:</span><span class="hl-11"> </span><span class="hl-2">&quot;vfs&quot;</span><span class="hl-11"> },</span><br/><span class="hl-11"> });</span><br/><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">ensureInitialized</span><span class="hl-11">();</span><br/><br/><span class="hl-11"> </span><span class="hl-4">const</span><span class="hl-11"> </span><span class="hl-7">out</span><span class="hl-11"> </span><span class="hl-1">=</span><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">executeCommandLine</span><span class="hl-11">(</span><span class="hl-2">&quot;ls /etc &amp;&amp; echo hello&quot;</span><span class="hl-11">);</span><br/><span class="hl-11"> </span><span class="hl-5">console</span><span class="hl-11">.</span><span class="hl-0">log</span><span class="hl-11">(</span><span class="hl-5">out</span><span class="hl-11">.</span><span class="hl-5">stdout</span><span class="hl-11">);</span><br/><span class="hl-9">&lt;/</span><span class="hl-10">script</span><span class="hl-9">&gt;</span>
141
157
  </code><button type="button">Copy</button></pre>
142
158
 
143
- <p><strong><code>web-full-api.min.js</code></strong> — mirrors the <code>VirtualShell</code> programmatic API:</p>
144
- <pre><code class="html"><span class="hl-9">&lt;</span><span class="hl-10">script</span><span class="hl-11"> </span><span class="hl-12">type</span><span class="hl-11">=</span><span class="hl-13">&quot;module&quot;</span><span class="hl-9">&gt;</span><br/><span class="hl-11"> </span><span class="hl-6">import</span><span class="hl-11"> { </span><span class="hl-5">createVirtualShellShim</span><span class="hl-11"> } </span><span class="hl-6">from</span><span class="hl-11"> </span><span class="hl-2">&quot;./builds/web-full-api.min.js&quot;</span><span class="hl-11">;</span><br/><br/><span class="hl-11"> </span><span class="hl-4">const</span><span class="hl-11"> </span><span class="hl-7">shell</span><span class="hl-11"> </span><span class="hl-1">=</span><span class="hl-11"> </span><span class="hl-0">createVirtualShellShim</span><span class="hl-11">(</span><span class="hl-2">&quot;web-vm&quot;</span><span class="hl-11">);</span><br/><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">ensureInitialized</span><span class="hl-11">();</span><br/><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">executeCommandLine</span><span class="hl-11">(</span><span class="hl-2">&quot;mkdir -p /app &amp;&amp; echo hello &gt; /app/file.txt&quot;</span><span class="hl-11">);</span><br/><span class="hl-11"> </span><span class="hl-5">console</span><span class="hl-11">.</span><span class="hl-0">log</span><span class="hl-11">(</span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">getVfs</span><span class="hl-11">().</span><span class="hl-0">readFile</span><span class="hl-11">(</span><span class="hl-2">&quot;/app/file.txt&quot;</span><span class="hl-11">)); </span><span class="hl-3">// hello</span><br/><span class="hl-9">&lt;/</span><span class="hl-10">script</span><span class="hl-9">&gt;</span>
159
+ <p><strong><code>fortune-nyx-v1.5.1-web.min.js</code></strong> — mirrors the <code>VirtualShell</code> programmatic API:</p>
160
+ <pre><code class="html"><span class="hl-9">&lt;</span><span class="hl-10">script</span><span class="hl-11"> </span><span class="hl-12">type</span><span class="hl-11">=</span><span class="hl-13">&quot;module&quot;</span><span class="hl-9">&gt;</span><br/><span class="hl-11"> </span><span class="hl-6">import</span><span class="hl-11"> { </span><span class="hl-5">createVirtualShellShim</span><span class="hl-11"> } </span><span class="hl-6">from</span><span class="hl-11"> </span><span class="hl-2">&quot;./builds/fortune-nyx-v1.5.1-web.min.js&quot;</span><span class="hl-11">;</span><br/><br/><span class="hl-11"> </span><span class="hl-4">const</span><span class="hl-11"> </span><span class="hl-7">shell</span><span class="hl-11"> </span><span class="hl-1">=</span><span class="hl-11"> </span><span class="hl-0">createVirtualShellShim</span><span class="hl-11">(</span><span class="hl-2">&quot;web-vm&quot;</span><span class="hl-11">);</span><br/><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">ensureInitialized</span><span class="hl-11">();</span><br/><span class="hl-11"> </span><span class="hl-6">await</span><span class="hl-11"> </span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">executeCommandLine</span><span class="hl-11">(</span><span class="hl-2">&quot;mkdir -p /app &amp;&amp; echo hello &gt; /app/file.txt&quot;</span><span class="hl-11">);</span><br/><span class="hl-11"> </span><span class="hl-5">console</span><span class="hl-11">.</span><span class="hl-0">log</span><span class="hl-11">(</span><span class="hl-5">shell</span><span class="hl-11">.</span><span class="hl-0">getVfs</span><span class="hl-11">().</span><span class="hl-0">readFile</span><span class="hl-11">(</span><span class="hl-2">&quot;/app/file.txt&quot;</span><span class="hl-11">)); </span><span class="hl-3">// hello</span><br/><span class="hl-9">&lt;/</span><span class="hl-10">script</span><span class="hl-9">&gt;</span>
145
161
  </code><button type="button">Copy</button></pre>
146
162
 
163
+ <!-- /BUILD:web-options -->
147
164
  <p><strong>Run the demo locally:</strong></p>
148
165
  <pre><code class="bash"><span class="hl-0">bun</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">example-serve</span><br/><span class="hl-3"># Open http://localhost:8787/index.html</span>
149
166
  </code><button type="button">Copy</button></pre>
150
167
 
168
+ <blockquote>
169
+ <p>You can also try the hosted demo at <strong><a href="https://itsrealfortune.fr/typescript-virtual-container/demo">itsrealfortune.fr/typescript-virtual-container/demo</a></strong>.</p>
170
+ </blockquote>
151
171
  <h3 id="programmatic-api" class="tsd-anchor-link">Programmatic API<a href="#programmatic-api" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3>
152
172
  <pre><code class="typescript"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">SshClient</span><span class="hl-1">, </span><span class="hl-5">VirtualShell</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&quot;typescript-virtual-container&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">shell</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">VirtualShell</span><span class="hl-1">(</span><span class="hl-2">&quot;typescript-vm&quot;</span><span class="hl-1">);</span><br/><span class="hl-6">await</span><span class="hl-1"> </span><span class="hl-5">shell</span><span class="hl-1">.</span><span class="hl-0">ensureInitialized</span><span class="hl-1">();</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">client</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">SshClient</span><span class="hl-1">(</span><span class="hl-5">shell</span><span class="hl-1">, </span><span class="hl-2">&quot;root&quot;</span><span class="hl-1">);</span><br/><br/><span class="hl-6">await</span><span class="hl-1"> </span><span class="hl-5">client</span><span class="hl-1">.</span><span class="hl-0">mkdir</span><span class="hl-1">(</span><span class="hl-2">&quot;/app/config&quot;</span><span class="hl-1">, </span><span class="hl-4">true</span><span class="hl-1">);</span><br/><span class="hl-6">await</span><span class="hl-1"> </span><span class="hl-5">client</span><span class="hl-1">.</span><span class="hl-0">writeFile</span><span class="hl-1">(</span><span class="hl-2">&quot;/app/config/settings.json&quot;</span><span class="hl-1">, </span><span class="hl-7">JSON</span><span class="hl-1">.</span><span class="hl-0">stringify</span><span class="hl-1">({ </span><span class="hl-5">env:</span><span class="hl-1"> </span><span class="hl-2">&quot;dev&quot;</span><span class="hl-1"> }));</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">r</span><span class="hl-1"> = </span><span class="hl-6">await</span><span class="hl-1"> </span><span class="hl-5">client</span><span class="hl-1">.</span><span class="hl-0">exec</span><span class="hl-1">(</span><span class="hl-2">&quot;ls /app &amp;&amp; cat /app/config/settings.json&quot;</span><span class="hl-1">);</span><br/><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">r</span><span class="hl-1">.</span><span class="hl-5">stdout</span><span class="hl-1">);</span>
153
173
  </code><button type="button">Copy</button></pre>
@@ -1833,11 +1853,17 @@ Core operations are implemented. Extended attributes and symlinks return <code>O
1833
1853
  <li>[x] <code>/proc/self</code> and <code>/proc/&lt;pid&gt;</code> per-session entries</li>
1834
1854
  <li>[x] Snapshot diff tooling — <code>diffSnapshots</code>, <code>formatDiff</code>, <code>assertDiff</code></li>
1835
1855
  <li>[x] <code>node</code>/<code>python3</code>/<code>npm</code>/<code>npx</code> — package-gated virtual REPL stubs</li>
1836
- <li>[x] Web shell bundles (<code>web.min.js</code>, <code>web-full-api.min.js</code>) — fully browser-native with IndexedDB VFS</li>
1837
- <li>[x] Self-standalone CLI (<code>self-standalone.mjs</code>) — single-file interactive shell, per-user history, tab completion</li>
1856
+ </ul>
1857
+ <!-- BUILD:changelog -->
1858
+ <ul>
1859
+ <li>[x] Web shell bundles (<code>fortune-nyx-v1.5.1-web.min.js</code>) — fully browser-native with IndexedDB VFS</li>
1860
+ <li>[x] Self-standalone CLI (<code>fortune-nyx-v1.5.1-directbash-k6.1.0.mjs</code>) — single-file interactive shell, per-user history, tab completion</li>
1861
+ </ul>
1862
+ <!-- /BUILD:changelog -->
1863
+ <ul>
1838
1864
  <li>[x] 120+ <code>man</code> pages — all built-in commands documented via <code>man &lt;cmd&gt;</code></li>
1839
1865
  <li>[x] Shared <code>tokenize.ts</code> — unified tokenizer for shell parser and runtime (eliminates duplication)</li>
1840
1866
  <li>[x] <code>PasswordChallenge</code> type — generic interactive password flow for <code>adduser</code>, <code>passwd</code>, <code>deluser</code></li>
1841
1867
  <li>[x] <code>VirtualFileSystem.mount(vPath, hostPath, { readOnly })</code> — bind-mount host directories into the VM; read-only by default; browser-safe (silent no-op)</li>
1842
1868
  </ul>
1843
- </details></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#_"><span></span></a><ul><li><a href="#table-of-contents"><span>Table of <wbr/>Contents</span></a></li><li><a href="#three-ways-to-run"><span>Three ways to run</span></a></li><li><a href="#get-started"><span>Get <wbr/>Started</span></a></li><li><ul><li><a href="#install"><span>Install</span></a></li><li><a href="#try-instantly-zero-install"><span>Try instantly (zero install)</span></a></li><li><a href="#ssh-server"><span>SSH server</span></a></li><li><a href="#web-shell-browser"><span>Web shell (browser)</span></a></li><li><a href="#programmatic-api"><span>Programmatic <wbr/>API</span></a></li></ul></li><li><a href="#how-it-works"><span>How <wbr/>It <wbr/>Works</span></a></li><li><ul><li><a href="#_-1"><span></span></a></li><li><a href="#_-2"><span></span></a></li><li><a href="#_-3"><span></span></a></li><li><a href="#_-4"><span></span></a></li><li><ul><li><a href="#mount-api"><span>Mount <wbr/>API</span></a></li><li><a href="#vfsb-binary-format"><span>VFSB <wbr/>Binary <wbr/>Format</span></a></li></ul></li><li><a href="#_-5"><span></span></a></li><li><a href="#_-6"><span></span></a></li><li><a href="#snapshot-diff-tooling"><span>Snapshot <wbr/>Diff <wbr/>Tooling</span></a></li><li><a href="#_-7"><span></span></a></li><li><a href="#programmatic-api-1"><span> (<wbr/>Programmatic <wbr/>API)</span></a></li><li><a href="#key-types"><span>Key <wbr/>Types</span></a></li><li><a href="#command-helpers"><span>Command <wbr/>Helpers</span></a></li><li><a href="#ssh-server-with-events"><span>SSH <wbr/>Server with <wbr/>Events</span></a></li><li><a href="#ssh-sftp-with-shared-state"><span>SSH + <wbr/>SFTP with <wbr/>Shared <wbr/>State</span></a></li><li><a href="#multi-user-environment-with-quotas"><span>Multi-<wbr/>User <wbr/>Environment with <wbr/>Quotas</span></a></li><li><a href="#persistent-state"><span>Persistent <wbr/>State</span></a></li><li><a href="#public-key-authentication"><span>Public-<wbr/>Key <wbr/>Authentication</span></a></li><li><a href="#rate-limiting"><span>Rate <wbr/>Limiting</span></a></li><li><a href="#shell-operators-and-variables"><span>Shell <wbr/>Operators and <wbr/>Variables</span></a></li><li><a href="#shell-scripting"><span>Shell <wbr/>Scripting</span></a></li><li><a href="#snapshot-based-test-fixtures"><span>Snapshot-<wbr/>Based <wbr/>Test <wbr/>Fixtures</span></a></li><li><a href="#snapshot-diff-in-tests"><span>Snapshot <wbr/>Diff in <wbr/>Tests</span></a></li><li><a href="#symlinks"><span>Symlinks</span></a></li><li><a href="#security-auditing-with-honeypot"><span>Security <wbr/>Auditing with <wbr/>Honey<wbr/>Pot</span></a></li><li><a href="#concurrent-clients"><span>Concurrent <wbr/>Clients</span></a></li><li><a href="#bashrc"><span>.bashrc</span></a></li><li><a href="#navigation"><span>Navigation</span></a></li><li><a href="#files-filesystem"><span>Files &amp; <wbr/>Filesystem</span></a></li><li><a href="#text-processing"><span>Text <wbr/>Processing</span></a></li><li><a href="#archive-compression"><span>Archive &amp; <wbr/>Compression</span></a></li><li><a href="#system"><span>System</span></a></li><li><a href="#network"><span>Network</span></a></li><li><a href="#shell-scripting-1"><span>Shell &amp; <wbr/>Scripting</span></a></li><li><a href="#package-management"><span>Package <wbr/>Management</span></a></li><li><a href="#users-permissions"><span>Users &amp; <wbr/>Permissions</span></a></li><li><a href="#operators-and-redirections"><span>Operators and <wbr/>Redirections</span></a></li><li><a href="#variable-expansion"><span>Variable <wbr/>Expansion</span></a></li><li><a href="#arithmetic"><span>Arithmetic</span></a></li><li><a href="#conditionals"><span>Conditionals</span></a></li><li><a href="#loops"><span>Loops</span></a></li><li><a href="#functions-and-case"><span>Functions and case</span></a></li><li><a href="#script-files"><span>Script <wbr/>Files</span></a></li><li><a href="#bashrc-1"><span>.bashrc</span></a></li><li><a href="#directory-layout"><span>Directory <wbr/>Layout</span></a></li><li><a href="#vfs-path-resolution"><span>VFS <wbr/>PATH <wbr/>Resolution</span></a></li><li><a href="#built-in-package-registry-25-packages"><span>Built-<wbr/>in <wbr/>Package <wbr/>Registry (25 packages)</span></a></li><li><a href="#environment-variables"><span>Environment <wbr/>Variables</span></a></li><li><a href="#constructor-options"><span>Constructor <wbr/>Options</span></a></li></ul></li><li><a href="#troubleshooting"><span>Troubleshooting</span></a></li><li><a href="#faq"><span>FAQ</span></a></li><li><a href="#contributing"><span>Contributing</span></a></li><li><a href="#security"><span>Security</span></a></li><li><a href="#compatibility"><span>Compatibility</span></a></li><li><a href="#license"><span>License</span></a></li><li><a href="#roadmap"><span>Roadmap</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">typescript-virtual-container - v1.5.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
1869
+ </details></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#_"><span></span></a><ul><li><a href="#table-of-contents"><span>Table of <wbr/>Contents</span></a></li><li><a href="#three-ways-to-run"><span>Three ways to run</span></a></li><li><a href="#get-started"><span>Get <wbr/>Started</span></a></li><li><ul><li><a href="#install"><span>Install</span></a></li><li><a href="#try-instantly-zero-install"><span>Try instantly (zero install)</span></a></li><li><ul><li><a href="#interactivea-local-shell-persists-vfs-in-vfs-in-the-current-directory"><span>Interactivea local shell — persists <wbr/>VFS in .vfs/ in the current directory</span></a></li><li><a href="#ssh-server-connect-with-any-ssh-client-on-port-2222"><span>SSH server (connect with any <wbr/>SSH client on port 2222)</span></a></li><li><a href="#ssh-server-without-sftp-lighter-build"><span>SSH server without <wbr/>SFTP (lighter build)</span></a></li></ul></li><li><a href="#ssh-server"><span>SSH server</span></a></li><li><a href="#web-shell-browser"><span>Web shell (browser)</span></a></li><li><a href="#programmatic-api"><span>Programmatic <wbr/>API</span></a></li></ul></li><li><a href="#how-it-works"><span>How <wbr/>It <wbr/>Works</span></a></li><li><ul><li><a href="#_-1"><span></span></a></li><li><a href="#_-2"><span></span></a></li><li><a href="#_-3"><span></span></a></li><li><a href="#_-4"><span></span></a></li><li><ul><li><a href="#mount-api"><span>Mount <wbr/>API</span></a></li><li><a href="#vfsb-binary-format"><span>VFSB <wbr/>Binary <wbr/>Format</span></a></li></ul></li><li><a href="#_-5"><span></span></a></li><li><a href="#_-6"><span></span></a></li><li><a href="#snapshot-diff-tooling"><span>Snapshot <wbr/>Diff <wbr/>Tooling</span></a></li><li><a href="#_-7"><span></span></a></li><li><a href="#programmatic-api-1"><span> (<wbr/>Programmatic <wbr/>API)</span></a></li><li><a href="#key-types"><span>Key <wbr/>Types</span></a></li><li><a href="#command-helpers"><span>Command <wbr/>Helpers</span></a></li><li><a href="#ssh-server-with-events"><span>SSH <wbr/>Server with <wbr/>Events</span></a></li><li><a href="#ssh-sftp-with-shared-state"><span>SSH + <wbr/>SFTP with <wbr/>Shared <wbr/>State</span></a></li><li><a href="#multi-user-environment-with-quotas"><span>Multi-<wbr/>User <wbr/>Environment with <wbr/>Quotas</span></a></li><li><a href="#persistent-state"><span>Persistent <wbr/>State</span></a></li><li><a href="#public-key-authentication"><span>Public-<wbr/>Key <wbr/>Authentication</span></a></li><li><a href="#rate-limiting"><span>Rate <wbr/>Limiting</span></a></li><li><a href="#shell-operators-and-variables"><span>Shell <wbr/>Operators and <wbr/>Variables</span></a></li><li><a href="#shell-scripting"><span>Shell <wbr/>Scripting</span></a></li><li><a href="#snapshot-based-test-fixtures"><span>Snapshot-<wbr/>Based <wbr/>Test <wbr/>Fixtures</span></a></li><li><a href="#snapshot-diff-in-tests"><span>Snapshot <wbr/>Diff in <wbr/>Tests</span></a></li><li><a href="#symlinks"><span>Symlinks</span></a></li><li><a href="#security-auditing-with-honeypot"><span>Security <wbr/>Auditing with <wbr/>Honey<wbr/>Pot</span></a></li><li><a href="#concurrent-clients"><span>Concurrent <wbr/>Clients</span></a></li><li><a href="#bashrc"><span>.bashrc</span></a></li><li><a href="#navigation"><span>Navigation</span></a></li><li><a href="#files-filesystem"><span>Files &amp; <wbr/>Filesystem</span></a></li><li><a href="#text-processing"><span>Text <wbr/>Processing</span></a></li><li><a href="#archive-compression"><span>Archive &amp; <wbr/>Compression</span></a></li><li><a href="#system"><span>System</span></a></li><li><a href="#network"><span>Network</span></a></li><li><a href="#shell-scripting-1"><span>Shell &amp; <wbr/>Scripting</span></a></li><li><a href="#package-management"><span>Package <wbr/>Management</span></a></li><li><a href="#users-permissions"><span>Users &amp; <wbr/>Permissions</span></a></li><li><a href="#operators-and-redirections"><span>Operators and <wbr/>Redirections</span></a></li><li><a href="#variable-expansion"><span>Variable <wbr/>Expansion</span></a></li><li><a href="#arithmetic"><span>Arithmetic</span></a></li><li><a href="#conditionals"><span>Conditionals</span></a></li><li><a href="#loops"><span>Loops</span></a></li><li><a href="#functions-and-case"><span>Functions and case</span></a></li><li><a href="#script-files"><span>Script <wbr/>Files</span></a></li><li><a href="#bashrc-1"><span>.bashrc</span></a></li><li><a href="#directory-layout"><span>Directory <wbr/>Layout</span></a></li><li><a href="#vfs-path-resolution"><span>VFS <wbr/>PATH <wbr/>Resolution</span></a></li><li><a href="#built-in-package-registry-25-packages"><span>Built-<wbr/>in <wbr/>Package <wbr/>Registry (25 packages)</span></a></li><li><a href="#environment-variables"><span>Environment <wbr/>Variables</span></a></li><li><a href="#constructor-options"><span>Constructor <wbr/>Options</span></a></li></ul></li><li><a href="#troubleshooting"><span>Troubleshooting</span></a></li><li><a href="#faq"><span>FAQ</span></a></li><li><a href="#contributing"><span>Contributing</span></a></li><li><a href="#security"><span>Security</span></a></li><li><a href="#compatibility"><span>Compatibility</span></a></li><li><a href="#license"><span>License</span></a></li><li><a href="#roadmap"><span>Roadmap</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules">typescript-virtual-container - v1.5.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,6 +1,6 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>AuditLogEntry | typescript-virtual-container - v1.5.0</title><meta name="description" content="Documentation for typescript-virtual-container"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">typescript-virtual-container - v1.5.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">AuditLogEntry</a></li></ul><h1>Interface AuditLogEntry</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Audit log entry recorded for each event.</p>
2
- </div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">AuditLogEntry</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#details">details</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#source">source</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#timestamp">timestamp</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#type">type</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/52880451442508494c6f496513aae8ae8d1600b8/src/Honeypot/index.ts#L23">src/Honeypot/index.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#details" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>details</span></a>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>AuditLogEntry | typescript-virtual-container - v1.5.1</title><meta name="description" content="Documentation for typescript-virtual-container"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index" class="title">typescript-virtual-container - v1.5.1</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">AuditLogEntry</a></li></ul><h1>Interface AuditLogEntry</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Audit log entry recorded for each event.</p>
2
+ </div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">AuditLogEntry</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#details">details</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#source">source</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#timestamp">timestamp</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#type">type</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/fb7be7571dd01ba1e3a43568d4e2981175b64fb5/src/Honeypot/index.ts#L23">src/Honeypot/index.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#details" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>details</span></a>
3
3
  <a href="#source" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>source</span></a>
4
4
  <a href="#timestamp" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>timestamp</span></a>
5
5
  <a href="#type" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>type</span></a>
6
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="details"><span>details</span><a href="#details" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">details</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/52880451442508494c6f496513aae8ae8d1600b8/src/Honeypot/index.ts#L27">src/Honeypot/index.ts:27</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="source"><span>source</span><a href="#source" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">source</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/52880451442508494c6f496513aae8ae8d1600b8/src/Honeypot/index.ts#L26">src/Honeypot/index.ts:26</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="timestamp"><span>timestamp</span><a href="#timestamp" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">timestamp</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/52880451442508494c6f496513aae8ae8d1600b8/src/Honeypot/index.ts#L24">src/Honeypot/index.ts:24</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="type"><span>type</span><a href="#type" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">type</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/52880451442508494c6f496513aae8ae8d1600b8/src/Honeypot/index.ts#L25">src/Honeypot/index.ts:25</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#details"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>details</span></a><a href="#source"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>source</span></a><a href="#timestamp"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>timestamp</span></a><a href="#type"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>type</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">typescript-virtual-container - v1.5.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
6
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="details"><span>details</span><a href="#details" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">details</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/fb7be7571dd01ba1e3a43568d4e2981175b64fb5/src/Honeypot/index.ts#L27">src/Honeypot/index.ts:27</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="source"><span>source</span><a href="#source" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">source</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/fb7be7571dd01ba1e3a43568d4e2981175b64fb5/src/Honeypot/index.ts#L26">src/Honeypot/index.ts:26</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="timestamp"><span>timestamp</span><a href="#timestamp" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">timestamp</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/fb7be7571dd01ba1e3a43568d4e2981175b64fb5/src/Honeypot/index.ts#L24">src/Honeypot/index.ts:24</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="type"><span>type</span><a href="#type" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">type</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/fb7be7571dd01ba1e3a43568d4e2981175b64fb5/src/Honeypot/index.ts#L25">src/Honeypot/index.ts:25</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#details"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>details</span></a><a href="#source"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>source</span></a><a href="#timestamp"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>timestamp</span></a><a href="#type"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>type</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules">typescript-virtual-container - v1.5.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>