typescript-virtual-container 1.4.4 → 1.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (884) hide show
  1. package/README.md +1 -1
  2. package/builds/self-standalone.js +321 -272
  3. package/builds/self-standalone.js.map +4 -4
  4. package/builds/standalone-wo-sftp.js +262 -212
  5. package/builds/standalone-wo-sftp.js.map +4 -4
  6. package/builds/standalone.cjs +491 -0
  7. package/builds/standalone.cjs.map +7 -0
  8. package/builds/standalone.js +266 -216
  9. package/builds/standalone.js.map +4 -4
  10. package/builds/web-full-api.min.js +5 -5
  11. package/builds/web-full-api.min.js.map +3 -3
  12. package/builds/web.min.js +5 -5
  13. package/builds/web.min.js.map +3 -3
  14. package/bun.lock +97 -0
  15. package/dist/Honeypot/index.d.ts.map +1 -0
  16. package/dist/Honeypot/index.js +299 -0
  17. package/dist/Honeypot/index.js.map +1 -0
  18. package/dist/SSHClient/index.d.ts.map +1 -0
  19. package/dist/SSHClient/index.js +238 -0
  20. package/dist/SSHClient/index.js.map +1 -0
  21. package/dist/SSHMimic/exec.d.ts.map +1 -0
  22. package/dist/SSHMimic/exec.js +28 -0
  23. package/dist/SSHMimic/exec.js.map +1 -0
  24. package/dist/SSHMimic/executor.d.ts.map +1 -0
  25. package/dist/SSHMimic/executor.js +161 -0
  26. package/dist/SSHMimic/executor.js.map +1 -0
  27. package/dist/SSHMimic/hostKey.d.ts.map +1 -0
  28. package/dist/SSHMimic/hostKey.js +18 -0
  29. package/dist/SSHMimic/hostKey.js.map +1 -0
  30. package/dist/SSHMimic/index.d.ts.map +1 -0
  31. package/dist/SSHMimic/index.js +250 -0
  32. package/dist/SSHMimic/index.js.map +1 -0
  33. package/dist/SSHMimic/loginBanner.d.ts.map +1 -0
  34. package/dist/SSHMimic/loginBanner.js +23 -0
  35. package/dist/SSHMimic/loginBanner.js.map +1 -0
  36. package/dist/SSHMimic/loginFormat.d.ts.map +1 -0
  37. package/dist/SSHMimic/loginFormat.js +11 -0
  38. package/dist/SSHMimic/loginFormat.js.map +1 -0
  39. package/dist/SSHMimic/prompt.d.ts.map +1 -0
  40. package/dist/SSHMimic/prompt.js +10 -0
  41. package/dist/SSHMimic/prompt.js.map +1 -0
  42. package/dist/SSHMimic/sftp.d.ts.map +1 -0
  43. package/dist/SSHMimic/sftp.js +620 -0
  44. package/dist/SSHMimic/sftp.js.map +1 -0
  45. package/dist/VirtualFileSystem/binaryPack.d.ts.map +1 -0
  46. package/dist/VirtualFileSystem/binaryPack.js +217 -0
  47. package/dist/VirtualFileSystem/binaryPack.js.map +1 -0
  48. package/dist/VirtualFileSystem/index.d.ts.map +1 -0
  49. package/dist/VirtualFileSystem/index.js +690 -0
  50. package/dist/VirtualFileSystem/index.js.map +1 -0
  51. package/dist/VirtualFileSystem/internalTypes.d.ts.map +1 -0
  52. package/dist/VirtualFileSystem/internalTypes.js +1 -0
  53. package/dist/VirtualFileSystem/internalTypes.js.map +1 -0
  54. package/dist/VirtualFileSystem/path.d.ts.map +1 -0
  55. package/dist/VirtualFileSystem/path.js +50 -0
  56. package/dist/VirtualFileSystem/path.js.map +1 -0
  57. package/dist/VirtualPackageManager/index.d.ts.map +1 -0
  58. package/dist/VirtualPackageManager/index.js +854 -0
  59. package/dist/VirtualPackageManager/index.js.map +1 -0
  60. package/dist/VirtualShell/index.d.ts.map +1 -0
  61. package/dist/VirtualShell/index.js +285 -0
  62. package/dist/VirtualShell/index.js.map +1 -0
  63. package/dist/VirtualShell/shell.d.ts.map +1 -0
  64. package/dist/VirtualShell/shell.js +503 -0
  65. package/dist/VirtualShell/shell.js.map +1 -0
  66. package/dist/VirtualShell/shellParser.d.ts.map +1 -0
  67. package/dist/VirtualShell/shellParser.js +266 -0
  68. package/dist/VirtualShell/shellParser.js.map +1 -0
  69. package/dist/VirtualUserManager/index.d.ts.map +1 -0
  70. package/dist/VirtualUserManager/index.js +608 -0
  71. package/dist/VirtualUserManager/index.js.map +1 -0
  72. package/dist/commands/adduser.d.ts.map +1 -0
  73. package/dist/commands/adduser.js +90 -0
  74. package/dist/commands/adduser.js.map +1 -0
  75. package/dist/commands/alias.d.ts.map +1 -0
  76. package/dist/commands/alias.js +69 -0
  77. package/dist/commands/alias.js.map +1 -0
  78. package/dist/commands/apt.d.ts.map +1 -0
  79. package/dist/commands/apt.js +211 -0
  80. package/dist/commands/apt.js.map +1 -0
  81. package/dist/commands/awk.d.ts.map +1 -0
  82. package/dist/commands/awk.js +170 -0
  83. package/dist/commands/awk.js.map +1 -0
  84. package/dist/commands/base64.d.ts.map +1 -0
  85. package/dist/commands/base64.js +29 -0
  86. package/dist/commands/base64.js.map +1 -0
  87. package/dist/commands/cat.d.ts.map +1 -0
  88. package/dist/commands/cat.js +45 -0
  89. package/dist/commands/cat.js.map +1 -0
  90. package/dist/commands/cd.d.ts.map +1 -0
  91. package/dist/commands/cd.js +22 -0
  92. package/dist/commands/cd.js.map +1 -0
  93. package/dist/commands/chmod.d.ts.map +1 -0
  94. package/dist/commands/chmod.js +88 -0
  95. package/dist/commands/chmod.js.map +1 -0
  96. package/dist/commands/clear.d.ts.map +1 -0
  97. package/dist/commands/clear.js +14 -0
  98. package/dist/commands/clear.js.map +1 -0
  99. package/dist/commands/command-helpers.d.ts.map +1 -0
  100. package/dist/commands/command-helpers.js +222 -0
  101. package/dist/commands/command-helpers.js.map +1 -0
  102. package/dist/commands/cp.d.ts.map +1 -0
  103. package/dist/commands/cp.js +76 -0
  104. package/dist/commands/cp.js.map +1 -0
  105. package/dist/commands/curl.d.ts.map +1 -0
  106. package/dist/commands/curl.js +128 -0
  107. package/dist/commands/curl.js.map +1 -0
  108. package/dist/commands/cut.d.ts.map +1 -0
  109. package/dist/commands/cut.js +35 -0
  110. package/dist/commands/cut.js.map +1 -0
  111. package/dist/commands/date.d.ts.map +1 -0
  112. package/dist/commands/date.js +29 -0
  113. package/dist/commands/date.js.map +1 -0
  114. package/dist/commands/declare.d.ts.map +1 -0
  115. package/dist/commands/declare.js +45 -0
  116. package/dist/commands/declare.js.map +1 -0
  117. package/dist/commands/deluser.d.ts.map +1 -0
  118. package/dist/commands/deluser.js +84 -0
  119. package/dist/commands/deluser.js.map +1 -0
  120. package/dist/commands/df.d.ts.map +1 -0
  121. package/dist/commands/df.js +22 -0
  122. package/dist/commands/df.js.map +1 -0
  123. package/dist/commands/diff.d.ts.map +1 -0
  124. package/dist/commands/diff.js +46 -0
  125. package/dist/commands/diff.js.map +1 -0
  126. package/dist/commands/dpkg.d.ts.map +1 -0
  127. package/dist/commands/dpkg.js +162 -0
  128. package/dist/commands/dpkg.js.map +1 -0
  129. package/dist/commands/du.d.ts.map +1 -0
  130. package/dist/commands/du.js +51 -0
  131. package/dist/commands/du.js.map +1 -0
  132. package/dist/commands/echo.d.ts.map +1 -0
  133. package/dist/commands/echo.js +46 -0
  134. package/dist/commands/echo.js.map +1 -0
  135. package/dist/commands/env.d.ts.map +1 -0
  136. package/dist/commands/env.js +21 -0
  137. package/dist/commands/env.js.map +1 -0
  138. package/dist/commands/exit.d.ts.map +1 -0
  139. package/dist/commands/exit.js +17 -0
  140. package/dist/commands/exit.js.map +1 -0
  141. package/dist/commands/export.d.ts.map +1 -0
  142. package/dist/commands/export.js +34 -0
  143. package/dist/commands/export.js.map +1 -0
  144. package/dist/commands/find.d.ts.map +1 -0
  145. package/dist/commands/find.js +56 -0
  146. package/dist/commands/find.js.map +1 -0
  147. package/dist/commands/free.d.ts.map +1 -0
  148. package/dist/commands/free.js +44 -0
  149. package/dist/commands/free.js.map +1 -0
  150. package/dist/commands/grep.d.ts.map +1 -0
  151. package/dist/commands/grep.js +121 -0
  152. package/dist/commands/grep.js.map +1 -0
  153. package/dist/commands/groups.d.ts.map +1 -0
  154. package/dist/commands/groups.js +18 -0
  155. package/dist/commands/groups.js.map +1 -0
  156. package/dist/commands/gzip.d.ts.map +1 -0
  157. package/dist/commands/gzip.js +83 -0
  158. package/dist/commands/gzip.js.map +1 -0
  159. package/dist/commands/head.d.ts.map +1 -0
  160. package/dist/commands/head.js +47 -0
  161. package/dist/commands/head.js.map +1 -0
  162. package/dist/commands/help.d.ts.map +1 -0
  163. package/dist/commands/help.js +124 -0
  164. package/dist/commands/help.js.map +1 -0
  165. package/dist/commands/helpers.d.ts.map +1 -0
  166. package/dist/commands/helpers.js +167 -0
  167. package/dist/commands/helpers.js.map +1 -0
  168. package/dist/commands/history.d.ts.map +1 -0
  169. package/dist/commands/history.js +27 -0
  170. package/dist/commands/history.js.map +1 -0
  171. package/dist/commands/hostname.d.ts.map +1 -0
  172. package/dist/commands/hostname.js +13 -0
  173. package/dist/commands/hostname.js.map +1 -0
  174. package/dist/commands/htop.d.ts.map +1 -0
  175. package/dist/commands/htop.js +18 -0
  176. package/dist/commands/htop.js.map +1 -0
  177. package/dist/commands/id.d.ts.map +1 -0
  178. package/dist/commands/id.js +18 -0
  179. package/dist/commands/id.js.map +1 -0
  180. package/dist/commands/index.d.ts.map +1 -0
  181. package/dist/commands/index.js +3 -0
  182. package/dist/commands/index.js.map +1 -0
  183. package/dist/commands/kill.d.ts.map +1 -0
  184. package/dist/commands/kill.js +19 -0
  185. package/dist/commands/kill.js.map +1 -0
  186. package/dist/commands/ln.d.ts.map +1 -0
  187. package/dist/commands/ln.js +67 -0
  188. package/dist/commands/ln.js.map +1 -0
  189. package/dist/commands/ls.d.ts.map +1 -0
  190. package/dist/commands/ls.js +201 -0
  191. package/dist/commands/ls.js.map +1 -0
  192. package/dist/commands/lsb-release.d.ts.map +1 -0
  193. package/dist/commands/lsb-release.js +62 -0
  194. package/dist/commands/lsb-release.js.map +1 -0
  195. package/dist/commands/man.d.ts.map +1 -0
  196. package/dist/commands/man.js +50 -0
  197. package/dist/commands/man.js.map +1 -0
  198. package/dist/commands/mkdir.d.ts.map +1 -0
  199. package/dist/commands/mkdir.js +29 -0
  200. package/dist/commands/mkdir.js.map +1 -0
  201. package/dist/commands/mv.d.ts.map +1 -0
  202. package/dist/commands/mv.js +43 -0
  203. package/dist/commands/mv.js.map +1 -0
  204. package/dist/commands/nano.d.ts.map +1 -0
  205. package/dist/commands/nano.js +35 -0
  206. package/dist/commands/nano.js.map +1 -0
  207. package/dist/commands/neofetch.d.ts.map +1 -0
  208. package/dist/commands/neofetch.js +49 -0
  209. package/dist/commands/neofetch.js.map +1 -0
  210. package/dist/commands/node.d.ts.map +1 -0
  211. package/dist/commands/node.js +317 -0
  212. package/dist/commands/node.js.map +1 -0
  213. package/dist/commands/npm.d.ts.map +1 -0
  214. package/dist/commands/npm.js +110 -0
  215. package/dist/commands/npm.js.map +1 -0
  216. package/dist/commands/passwd.d.ts.map +1 -0
  217. package/dist/commands/passwd.js +45 -0
  218. package/dist/commands/passwd.js.map +1 -0
  219. package/dist/commands/ping.d.ts.map +1 -0
  220. package/dist/commands/ping.js +29 -0
  221. package/dist/commands/ping.js.map +1 -0
  222. package/dist/commands/printf.d.ts.map +1 -0
  223. package/dist/commands/printf.js +145 -0
  224. package/dist/commands/printf.js.map +1 -0
  225. package/dist/commands/ps.d.ts.map +1 -0
  226. package/dist/commands/ps.js +47 -0
  227. package/dist/commands/ps.js.map +1 -0
  228. package/dist/commands/pwd.d.ts.map +1 -0
  229. package/dist/commands/pwd.js +8 -0
  230. package/dist/commands/pwd.js.map +1 -0
  231. package/dist/commands/python.d.ts.map +1 -0
  232. package/dist/commands/python.js +2059 -0
  233. package/dist/commands/python.js.map +1 -0
  234. package/dist/commands/read.d.ts.map +1 -0
  235. package/dist/commands/read.js +40 -0
  236. package/dist/commands/read.js.map +1 -0
  237. package/dist/commands/registry.d.ts.map +1 -0
  238. package/dist/commands/registry.js +235 -0
  239. package/dist/commands/registry.js.map +1 -0
  240. package/dist/commands/rm.d.ts.map +1 -0
  241. package/dist/commands/rm.js +37 -0
  242. package/dist/commands/rm.js.map +1 -0
  243. package/dist/commands/runtime.d.ts.map +1 -0
  244. package/dist/commands/runtime.js +286 -0
  245. package/dist/commands/runtime.js.map +1 -0
  246. package/dist/commands/sed.d.ts.map +1 -0
  247. package/dist/commands/sed.js +61 -0
  248. package/dist/commands/sed.js.map +1 -0
  249. package/dist/commands/seq.d.ts.map +1 -0
  250. package/dist/commands/seq.js +51 -0
  251. package/dist/commands/seq.js.map +1 -0
  252. package/dist/commands/set.d.ts.map +1 -0
  253. package/dist/commands/set.js +27 -0
  254. package/dist/commands/set.js.map +1 -0
  255. package/dist/commands/sh.d.ts.map +1 -0
  256. package/dist/commands/sh.js +432 -0
  257. package/dist/commands/sh.js.map +1 -0
  258. package/dist/commands/shift.d.ts.map +1 -0
  259. package/dist/commands/shift.js +63 -0
  260. package/dist/commands/shift.js.map +1 -0
  261. package/dist/commands/sleep.d.ts.map +1 -0
  262. package/dist/commands/sleep.js +19 -0
  263. package/dist/commands/sleep.js.map +1 -0
  264. package/dist/commands/sort.d.ts.map +1 -0
  265. package/dist/commands/sort.js +45 -0
  266. package/dist/commands/sort.js.map +1 -0
  267. package/dist/commands/source.d.ts.map +1 -0
  268. package/dist/commands/source.js +40 -0
  269. package/dist/commands/source.js.map +1 -0
  270. package/dist/commands/stat.d.ts.map +1 -0
  271. package/dist/commands/stat.js +57 -0
  272. package/dist/commands/stat.js.map +1 -0
  273. package/dist/commands/su.d.ts.map +1 -0
  274. package/dist/commands/su.js +58 -0
  275. package/dist/commands/su.js.map +1 -0
  276. package/dist/commands/sudo.d.ts.map +1 -0
  277. package/dist/commands/sudo.js +55 -0
  278. package/dist/commands/sudo.js.map +1 -0
  279. package/dist/commands/tail.d.ts.map +1 -0
  280. package/dist/commands/tail.js +48 -0
  281. package/dist/commands/tail.js.map +1 -0
  282. package/dist/commands/tar.d.ts.map +1 -0
  283. package/dist/commands/tar.js +103 -0
  284. package/dist/commands/tar.js.map +1 -0
  285. package/dist/commands/tee.d.ts.map +1 -0
  286. package/dist/commands/tee.js +37 -0
  287. package/dist/commands/tee.js.map +1 -0
  288. package/dist/commands/test.d.ts.map +1 -0
  289. package/dist/commands/test.js +115 -0
  290. package/dist/commands/test.js.map +1 -0
  291. package/dist/commands/touch.d.ts.map +1 -0
  292. package/dist/commands/touch.js +26 -0
  293. package/dist/commands/touch.js.map +1 -0
  294. package/dist/commands/tr.d.ts.map +1 -0
  295. package/dist/commands/tr.js +62 -0
  296. package/dist/commands/tr.js.map +1 -0
  297. package/dist/commands/tree.d.ts.map +1 -0
  298. package/dist/commands/tree.js +19 -0
  299. package/dist/commands/tree.js.map +1 -0
  300. package/dist/commands/true.d.ts.map +1 -0
  301. package/dist/commands/true.js +25 -0
  302. package/dist/commands/true.js.map +1 -0
  303. package/dist/commands/type.d.ts.map +1 -0
  304. package/dist/commands/type.js +40 -0
  305. package/dist/commands/type.js.map +1 -0
  306. package/dist/commands/uname.d.ts.map +1 -0
  307. package/dist/commands/uname.js +30 -0
  308. package/dist/commands/uname.js.map +1 -0
  309. package/dist/commands/uniq.d.ts.map +1 -0
  310. package/dist/commands/uniq.js +39 -0
  311. package/dist/commands/uniq.js.map +1 -0
  312. package/dist/commands/unset.d.ts.map +1 -0
  313. package/dist/commands/unset.js +17 -0
  314. package/dist/commands/unset.js.map +1 -0
  315. package/dist/commands/uptime.d.ts.map +1 -0
  316. package/dist/commands/uptime.js +49 -0
  317. package/dist/commands/uptime.js.map +1 -0
  318. package/dist/commands/wc.d.ts.map +1 -0
  319. package/dist/commands/wc.js +56 -0
  320. package/dist/commands/wc.js.map +1 -0
  321. package/dist/commands/wget.d.ts.map +1 -0
  322. package/dist/commands/wget.js +127 -0
  323. package/dist/commands/wget.js.map +1 -0
  324. package/dist/commands/which.d.ts.map +1 -0
  325. package/dist/commands/which.js +33 -0
  326. package/dist/commands/which.js.map +1 -0
  327. package/dist/commands/who.d.ts.map +1 -0
  328. package/dist/commands/who.js +23 -0
  329. package/dist/commands/who.js.map +1 -0
  330. package/dist/commands/whoami.d.ts.map +1 -0
  331. package/dist/commands/whoami.js +13 -0
  332. package/dist/commands/whoami.js.map +1 -0
  333. package/dist/commands/xargs.d.ts.map +1 -0
  334. package/dist/commands/xargs.js +22 -0
  335. package/dist/commands/xargs.js.map +1 -0
  336. package/dist/index.d.ts.map +1 -0
  337. package/dist/index.js +10 -0
  338. package/dist/index.js.map +1 -0
  339. package/dist/modules/linuxRootfs.d.ts.map +1 -0
  340. package/dist/modules/linuxRootfs.js +620 -0
  341. package/dist/modules/linuxRootfs.js.map +1 -0
  342. package/dist/modules/neofetch.d.ts.map +1 -0
  343. package/dist/modules/neofetch.js +285 -0
  344. package/dist/modules/neofetch.js.map +1 -0
  345. package/dist/modules/shellInteractive.d.ts.map +1 -0
  346. package/dist/modules/shellInteractive.js +27 -0
  347. package/dist/modules/shellInteractive.js.map +1 -0
  348. package/dist/modules/shellRuntime.d.ts.map +1 -0
  349. package/dist/modules/shellRuntime.js +53 -0
  350. package/dist/modules/shellRuntime.js.map +1 -0
  351. package/dist/self-standalone.d.ts.map +1 -0
  352. package/dist/self-standalone.js +420 -0
  353. package/dist/self-standalone.js.map +1 -0
  354. package/dist/standalone-wo-sftp.d.ts.map +1 -0
  355. package/dist/standalone-wo-sftp.js +31 -0
  356. package/dist/standalone-wo-sftp.js.map +1 -0
  357. package/dist/standalone.d.ts.map +1 -0
  358. package/dist/standalone.js +40 -0
  359. package/dist/standalone.js.map +1 -0
  360. package/dist/types/commands.d.ts.map +1 -0
  361. package/dist/types/commands.js +1 -0
  362. package/dist/types/commands.js.map +1 -0
  363. package/dist/types/pipeline.d.ts.map +1 -0
  364. package/dist/types/pipeline.js +1 -0
  365. package/dist/types/pipeline.js.map +1 -0
  366. package/dist/types/streams.d.ts.map +1 -0
  367. package/dist/types/streams.js +1 -0
  368. package/dist/types/streams.js.map +1 -0
  369. package/dist/types/vfs.d.ts.map +1 -0
  370. package/dist/types/vfs.js +1 -0
  371. package/dist/types/vfs.js.map +1 -0
  372. package/dist/utils/expand.d.ts.map +1 -0
  373. package/dist/utils/expand.js +477 -0
  374. package/dist/utils/expand.js.map +1 -0
  375. package/dist/utils/perfLogger.d.ts.map +1 -0
  376. package/dist/utils/perfLogger.js +50 -0
  377. package/dist/utils/perfLogger.js.map +1 -0
  378. package/dist/utils/tokenize.d.ts.map +1 -0
  379. package/dist/utils/tokenize.js +115 -0
  380. package/dist/utils/tokenize.js.map +1 -0
  381. package/dist/utils/vfsDiff.d.ts.map +1 -0
  382. package/dist/utils/vfsDiff.js +178 -0
  383. package/dist/utils/vfsDiff.js.map +1 -0
  384. package/dist/web-api.d.ts.map +1 -0
  385. package/dist/web-api.js +47 -0
  386. package/dist/web-api.js.map +1 -0
  387. package/dist/web-full.d.ts.map +1 -0
  388. package/dist/web-full.js +9 -0
  389. package/dist/web-full.js.map +1 -0
  390. package/dist/web.d.ts.map +1 -0
  391. package/dist/web.js +774 -0
  392. package/dist/web.js.map +1 -0
  393. package/docs/.nojekyll +1 -0
  394. package/docs/assets/hierarchy.js +1 -0
  395. package/docs/assets/highlight.css +162 -0
  396. package/docs/assets/icons.js +18 -0
  397. package/docs/assets/icons.svg +1 -0
  398. package/docs/assets/main.js +60 -0
  399. package/docs/assets/navigation.js +1 -0
  400. package/docs/assets/search.js +1 -0
  401. package/docs/assets/style.css +1633 -0
  402. package/docs/classes/HoneyPot.html +31 -0
  403. package/docs/classes/SshClient.html +66 -0
  404. package/docs/classes/VirtualFileSystem.html +262 -0
  405. package/docs/classes/VirtualPackageManager.html +63 -0
  406. package/docs/classes/VirtualSftpServer.html +169 -0
  407. package/docs/classes/VirtualShell.html +265 -0
  408. package/docs/classes/VirtualSshServer.html +177 -0
  409. package/docs/classes/VirtualUserManager.html +276 -0
  410. package/docs/functions/assertDiff.html +6 -0
  411. package/docs/functions/diffSnapshots.html +7 -0
  412. package/docs/functions/formatDiff.html +6 -0
  413. package/docs/functions/getArg.html +13 -0
  414. package/docs/functions/getFlag.html +15 -0
  415. package/docs/functions/ifFlag.html +11 -0
  416. package/docs/hierarchy.html +1 -0
  417. package/docs/index.html +1842 -0
  418. package/docs/interfaces/AuditLogEntry.html +6 -0
  419. package/docs/interfaces/CommandContext.html +22 -0
  420. package/docs/interfaces/CommandResult.html +26 -0
  421. package/docs/interfaces/ExecStream.html +11 -0
  422. package/docs/interfaces/HoneyPotStats.html +14 -0
  423. package/docs/interfaces/InstalledPackage.html +20 -0
  424. package/docs/interfaces/NanoEditorSession.html +8 -0
  425. package/docs/interfaces/PackageDefinition.html +30 -0
  426. package/docs/interfaces/PackageFile.html +8 -0
  427. package/docs/interfaces/RemoveOptions.html +4 -0
  428. package/docs/interfaces/ShellEnv.html +6 -0
  429. package/docs/interfaces/ShellModule.html +14 -0
  430. package/docs/interfaces/ShellProperties.html +14 -0
  431. package/docs/interfaces/ShellStream.html +11 -0
  432. package/docs/interfaces/SudoChallenge.html +24 -0
  433. package/docs/interfaces/VfsBaseNode.html +12 -0
  434. package/docs/interfaces/VfsDiff.html +10 -0
  435. package/docs/interfaces/VfsDiffEntry.html +6 -0
  436. package/docs/interfaces/VfsDiffModified.html +10 -0
  437. package/docs/interfaces/VfsDirectoryNode.html +15 -0
  438. package/docs/interfaces/VfsFileNode.html +17 -0
  439. package/docs/interfaces/VfsOptions.html +12 -0
  440. package/docs/interfaces/VfsSnapshot.html +3 -0
  441. package/docs/interfaces/VfsSnapshotBaseNode.html +8 -0
  442. package/docs/interfaces/VfsSnapshotDirectoryNode.html +10 -0
  443. package/docs/interfaces/VfsSnapshotFileNode.html +12 -0
  444. package/docs/interfaces/WriteFileOptions.html +6 -0
  445. package/docs/media/LICENSE +21 -0
  446. package/docs/modules.html +1 -0
  447. package/docs/types/CommandMode.html +2 -0
  448. package/docs/types/CommandOutcome.html +2 -0
  449. package/docs/types/VfsNodeStats.html +2 -0
  450. package/docs/types/VfsNodeType.html +2 -0
  451. package/docs/types/VfsPersistenceMode.html +5 -0
  452. package/docs/types/VfsSnapshotNode.html +2 -0
  453. package/examples/web.min.js +5 -5
  454. package/package.json +6 -4
  455. package/src/commands/man.ts +1 -1
  456. package/src/self-standalone.ts +1 -1
  457. package/src/standalone.ts +8 -3
  458. package/tsconfig.json +7 -2
  459. package/src/Honeypot/index.d.ts.map +0 -1
  460. package/src/Honeypot/index.js +0 -298
  461. package/src/SSHClient/index.d.ts.map +0 -1
  462. package/src/SSHClient/index.js +0 -237
  463. package/src/SSHMimic/exec.d.ts.map +0 -1
  464. package/src/SSHMimic/exec.js +0 -27
  465. package/src/SSHMimic/executor.d.ts.map +0 -1
  466. package/src/SSHMimic/executor.js +0 -160
  467. package/src/SSHMimic/hostKey.d.ts.map +0 -1
  468. package/src/SSHMimic/hostKey.js +0 -17
  469. package/src/SSHMimic/index.d.ts.map +0 -1
  470. package/src/SSHMimic/index.js +0 -249
  471. package/src/SSHMimic/loginBanner.d.ts.map +0 -1
  472. package/src/SSHMimic/loginBanner.js +0 -22
  473. package/src/SSHMimic/loginFormat.d.ts.map +0 -1
  474. package/src/SSHMimic/loginFormat.js +0 -10
  475. package/src/SSHMimic/prompt.d.ts.map +0 -1
  476. package/src/SSHMimic/prompt.js +0 -9
  477. package/src/SSHMimic/sftp.d.ts.map +0 -1
  478. package/src/SSHMimic/sftp.js +0 -619
  479. package/src/VirtualFileSystem/binaryPack.d.ts.map +0 -1
  480. package/src/VirtualFileSystem/binaryPack.js +0 -216
  481. package/src/VirtualFileSystem/index.d.ts.map +0 -1
  482. package/src/VirtualFileSystem/index.js +0 -689
  483. package/src/VirtualFileSystem/internalTypes.d.ts.map +0 -1
  484. package/src/VirtualFileSystem/internalTypes.js +0 -0
  485. package/src/VirtualFileSystem/path.d.ts.map +0 -1
  486. package/src/VirtualFileSystem/path.js +0 -49
  487. package/src/VirtualPackageManager/index.d.ts.map +0 -1
  488. package/src/VirtualPackageManager/index.js +0 -853
  489. package/src/VirtualShell/index.d.ts.map +0 -1
  490. package/src/VirtualShell/index.js +0 -284
  491. package/src/VirtualShell/shell.d.ts.map +0 -1
  492. package/src/VirtualShell/shell.js +0 -502
  493. package/src/VirtualShell/shellParser.d.ts.map +0 -1
  494. package/src/VirtualShell/shellParser.js +0 -265
  495. package/src/VirtualUserManager/index.d.ts.map +0 -1
  496. package/src/VirtualUserManager/index.js +0 -607
  497. package/src/commands/adduser.d.ts.map +0 -1
  498. package/src/commands/adduser.js +0 -89
  499. package/src/commands/alias.d.ts.map +0 -1
  500. package/src/commands/alias.js +0 -68
  501. package/src/commands/apt.d.ts.map +0 -1
  502. package/src/commands/apt.js +0 -210
  503. package/src/commands/awk.d.ts.map +0 -1
  504. package/src/commands/awk.js +0 -169
  505. package/src/commands/base64.d.ts.map +0 -1
  506. package/src/commands/base64.js +0 -28
  507. package/src/commands/cat.d.ts.map +0 -1
  508. package/src/commands/cat.js +0 -44
  509. package/src/commands/cd.d.ts.map +0 -1
  510. package/src/commands/cd.js +0 -21
  511. package/src/commands/chmod.d.ts.map +0 -1
  512. package/src/commands/chmod.js +0 -87
  513. package/src/commands/clear.d.ts.map +0 -1
  514. package/src/commands/clear.js +0 -13
  515. package/src/commands/command-helpers.d.ts.map +0 -1
  516. package/src/commands/command-helpers.js +0 -221
  517. package/src/commands/cp.d.ts.map +0 -1
  518. package/src/commands/cp.js +0 -75
  519. package/src/commands/curl.d.ts.map +0 -1
  520. package/src/commands/curl.js +0 -127
  521. package/src/commands/cut.d.ts.map +0 -1
  522. package/src/commands/cut.js +0 -34
  523. package/src/commands/date.d.ts.map +0 -1
  524. package/src/commands/date.js +0 -28
  525. package/src/commands/declare.d.ts.map +0 -1
  526. package/src/commands/declare.js +0 -44
  527. package/src/commands/deluser.d.ts.map +0 -1
  528. package/src/commands/deluser.js +0 -83
  529. package/src/commands/df.d.ts.map +0 -1
  530. package/src/commands/df.js +0 -21
  531. package/src/commands/diff.d.ts.map +0 -1
  532. package/src/commands/diff.js +0 -45
  533. package/src/commands/dpkg.d.ts.map +0 -1
  534. package/src/commands/dpkg.js +0 -161
  535. package/src/commands/du.d.ts.map +0 -1
  536. package/src/commands/du.js +0 -50
  537. package/src/commands/echo.d.ts.map +0 -1
  538. package/src/commands/echo.js +0 -45
  539. package/src/commands/env.d.ts.map +0 -1
  540. package/src/commands/env.js +0 -20
  541. package/src/commands/exit.d.ts.map +0 -1
  542. package/src/commands/exit.js +0 -16
  543. package/src/commands/export.d.ts.map +0 -1
  544. package/src/commands/export.js +0 -33
  545. package/src/commands/find.d.ts.map +0 -1
  546. package/src/commands/find.js +0 -55
  547. package/src/commands/free.d.ts.map +0 -1
  548. package/src/commands/free.js +0 -43
  549. package/src/commands/grep.d.ts.map +0 -1
  550. package/src/commands/grep.js +0 -120
  551. package/src/commands/groups.d.ts.map +0 -1
  552. package/src/commands/groups.js +0 -17
  553. package/src/commands/gzip.d.ts.map +0 -1
  554. package/src/commands/gzip.js +0 -82
  555. package/src/commands/head.d.ts.map +0 -1
  556. package/src/commands/head.js +0 -46
  557. package/src/commands/help.d.ts.map +0 -1
  558. package/src/commands/help.js +0 -123
  559. package/src/commands/helpers.d.ts.map +0 -1
  560. package/src/commands/helpers.js +0 -166
  561. package/src/commands/history.d.ts.map +0 -1
  562. package/src/commands/history.js +0 -26
  563. package/src/commands/hostname.d.ts.map +0 -1
  564. package/src/commands/hostname.js +0 -12
  565. package/src/commands/htop.d.ts.map +0 -1
  566. package/src/commands/htop.js +0 -17
  567. package/src/commands/id.d.ts.map +0 -1
  568. package/src/commands/id.js +0 -17
  569. package/src/commands/index.d.ts.map +0 -1
  570. package/src/commands/index.js +0 -2
  571. package/src/commands/kill.d.ts.map +0 -1
  572. package/src/commands/kill.js +0 -18
  573. package/src/commands/ln.d.ts.map +0 -1
  574. package/src/commands/ln.js +0 -66
  575. package/src/commands/ls.d.ts.map +0 -1
  576. package/src/commands/ls.js +0 -200
  577. package/src/commands/lsb-release.d.ts.map +0 -1
  578. package/src/commands/lsb-release.js +0 -61
  579. package/src/commands/man.d.ts.map +0 -1
  580. package/src/commands/man.js +0 -49
  581. package/src/commands/mkdir.d.ts.map +0 -1
  582. package/src/commands/mkdir.js +0 -28
  583. package/src/commands/mv.d.ts.map +0 -1
  584. package/src/commands/mv.js +0 -42
  585. package/src/commands/nano.d.ts.map +0 -1
  586. package/src/commands/nano.js +0 -34
  587. package/src/commands/neofetch.d.ts.map +0 -1
  588. package/src/commands/neofetch.js +0 -48
  589. package/src/commands/node.d.ts.map +0 -1
  590. package/src/commands/node.js +0 -316
  591. package/src/commands/npm.d.ts.map +0 -1
  592. package/src/commands/npm.js +0 -109
  593. package/src/commands/passwd.d.ts.map +0 -1
  594. package/src/commands/passwd.js +0 -44
  595. package/src/commands/ping.d.ts.map +0 -1
  596. package/src/commands/ping.js +0 -28
  597. package/src/commands/printf.d.ts.map +0 -1
  598. package/src/commands/printf.js +0 -144
  599. package/src/commands/ps.d.ts.map +0 -1
  600. package/src/commands/ps.js +0 -46
  601. package/src/commands/pwd.d.ts.map +0 -1
  602. package/src/commands/pwd.js +0 -7
  603. package/src/commands/python.d.ts.map +0 -1
  604. package/src/commands/python.js +0 -2058
  605. package/src/commands/read.d.ts.map +0 -1
  606. package/src/commands/read.js +0 -39
  607. package/src/commands/registry.d.ts.map +0 -1
  608. package/src/commands/registry.js +0 -234
  609. package/src/commands/rm.d.ts.map +0 -1
  610. package/src/commands/rm.js +0 -36
  611. package/src/commands/runtime.d.ts.map +0 -1
  612. package/src/commands/runtime.js +0 -285
  613. package/src/commands/sed.d.ts.map +0 -1
  614. package/src/commands/sed.js +0 -60
  615. package/src/commands/seq.d.ts.map +0 -1
  616. package/src/commands/seq.js +0 -50
  617. package/src/commands/set.d.ts.map +0 -1
  618. package/src/commands/set.js +0 -26
  619. package/src/commands/sh.d.ts.map +0 -1
  620. package/src/commands/sh.js +0 -431
  621. package/src/commands/shift.d.ts.map +0 -1
  622. package/src/commands/shift.js +0 -62
  623. package/src/commands/sleep.d.ts.map +0 -1
  624. package/src/commands/sleep.js +0 -18
  625. package/src/commands/sort.d.ts.map +0 -1
  626. package/src/commands/sort.js +0 -44
  627. package/src/commands/source.d.ts.map +0 -1
  628. package/src/commands/source.js +0 -39
  629. package/src/commands/stat.d.ts.map +0 -1
  630. package/src/commands/stat.js +0 -56
  631. package/src/commands/su.d.ts.map +0 -1
  632. package/src/commands/su.js +0 -57
  633. package/src/commands/sudo.d.ts.map +0 -1
  634. package/src/commands/sudo.js +0 -54
  635. package/src/commands/tail.d.ts.map +0 -1
  636. package/src/commands/tail.js +0 -47
  637. package/src/commands/tar.d.ts.map +0 -1
  638. package/src/commands/tar.js +0 -102
  639. package/src/commands/tee.d.ts.map +0 -1
  640. package/src/commands/tee.js +0 -36
  641. package/src/commands/test.d.ts.map +0 -1
  642. package/src/commands/test.js +0 -114
  643. package/src/commands/touch.d.ts.map +0 -1
  644. package/src/commands/touch.js +0 -25
  645. package/src/commands/tr.d.ts.map +0 -1
  646. package/src/commands/tr.js +0 -61
  647. package/src/commands/tree.d.ts.map +0 -1
  648. package/src/commands/tree.js +0 -18
  649. package/src/commands/true.d.ts.map +0 -1
  650. package/src/commands/true.js +0 -24
  651. package/src/commands/type.d.ts.map +0 -1
  652. package/src/commands/type.js +0 -39
  653. package/src/commands/uname.d.ts.map +0 -1
  654. package/src/commands/uname.js +0 -29
  655. package/src/commands/uniq.d.ts.map +0 -1
  656. package/src/commands/uniq.js +0 -38
  657. package/src/commands/unset.d.ts.map +0 -1
  658. package/src/commands/unset.js +0 -16
  659. package/src/commands/uptime.d.ts.map +0 -1
  660. package/src/commands/uptime.js +0 -48
  661. package/src/commands/wc.d.ts.map +0 -1
  662. package/src/commands/wc.js +0 -55
  663. package/src/commands/wget.d.ts.map +0 -1
  664. package/src/commands/wget.js +0 -126
  665. package/src/commands/which.d.ts.map +0 -1
  666. package/src/commands/which.js +0 -32
  667. package/src/commands/who.d.ts.map +0 -1
  668. package/src/commands/who.js +0 -22
  669. package/src/commands/whoami.d.ts.map +0 -1
  670. package/src/commands/whoami.js +0 -12
  671. package/src/commands/xargs.d.ts.map +0 -1
  672. package/src/commands/xargs.js +0 -21
  673. package/src/index.d.ts.map +0 -1
  674. package/src/index.js +0 -9
  675. package/src/modules/linuxRootfs.d.ts.map +0 -1
  676. package/src/modules/linuxRootfs.js +0 -619
  677. package/src/modules/neofetch.d.ts.map +0 -1
  678. package/src/modules/neofetch.js +0 -284
  679. package/src/modules/shellInteractive.d.ts.map +0 -1
  680. package/src/modules/shellInteractive.js +0 -26
  681. package/src/modules/shellRuntime.d.ts.map +0 -1
  682. package/src/modules/shellRuntime.js +0 -52
  683. package/src/self-standalone.d.ts.map +0 -1
  684. package/src/self-standalone.js +0 -418
  685. package/src/standalone-wo-sftp.d.ts.map +0 -1
  686. package/src/standalone-wo-sftp.js +0 -30
  687. package/src/standalone.d.ts.map +0 -1
  688. package/src/standalone.js +0 -35
  689. package/src/types/commands.d.ts.map +0 -1
  690. package/src/types/commands.js +0 -0
  691. package/src/types/pipeline.d.ts.map +0 -1
  692. package/src/types/pipeline.js +0 -0
  693. package/src/types/streams.d.ts.map +0 -1
  694. package/src/types/streams.js +0 -0
  695. package/src/types/vfs.d.ts.map +0 -1
  696. package/src/types/vfs.js +0 -0
  697. package/src/utils/expand.d.ts.map +0 -1
  698. package/src/utils/expand.js +0 -476
  699. package/src/utils/perfLogger.d.ts.map +0 -1
  700. package/src/utils/perfLogger.js +0 -49
  701. package/src/utils/tokenize.d.ts.map +0 -1
  702. package/src/utils/tokenize.js +0 -114
  703. package/src/utils/vfsDiff.d.ts.map +0 -1
  704. package/src/utils/vfsDiff.js +0 -177
  705. package/src/web-api.d.ts.map +0 -1
  706. package/src/web-api.js +0 -46
  707. package/src/web-full.d.ts.map +0 -1
  708. package/src/web-full.js +0 -8
  709. package/src/web.d.ts.map +0 -1
  710. package/src/web.js +0 -773
  711. package/tests/command-helpers.test.d.ts +0 -2
  712. package/tests/command-helpers.test.d.ts.map +0 -1
  713. package/tests/command-helpers.test.js +0 -92
  714. package/tests/commands-admin-net.test.d.ts +0 -2
  715. package/tests/commands-admin-net.test.d.ts.map +0 -1
  716. package/tests/commands-admin-net.test.js +0 -353
  717. package/tests/commands-advanced.test.d.ts +0 -2
  718. package/tests/commands-advanced.test.d.ts.map +0 -1
  719. package/tests/commands-advanced.test.js +0 -378
  720. package/tests/commands-core.test.d.ts +0 -2
  721. package/tests/commands-core.test.d.ts.map +0 -1
  722. package/tests/commands-core.test.js +0 -477
  723. package/tests/commands-missing.test.d.ts +0 -2
  724. package/tests/commands-missing.test.d.ts.map +0 -1
  725. package/tests/commands-missing.test.js +0 -470
  726. package/tests/commands-specific-units.test.d.ts +0 -2
  727. package/tests/commands-specific-units.test.d.ts.map +0 -1
  728. package/tests/commands-specific-units.test.js +0 -264
  729. package/tests/commands-text-sys.test.d.ts +0 -2
  730. package/tests/commands-text-sys.test.d.ts.map +0 -1
  731. package/tests/commands-text-sys.test.js +0 -366
  732. package/tests/expand.test.d.ts +0 -2
  733. package/tests/expand.test.d.ts.map +0 -1
  734. package/tests/expand.test.js +0 -138
  735. package/tests/helpers.test.d.ts +0 -2
  736. package/tests/helpers.test.d.ts.map +0 -1
  737. package/tests/helpers.test.js +0 -52
  738. package/tests/new-features.test.d.ts +0 -2
  739. package/tests/new-features.test.d.ts.map +0 -1
  740. package/tests/new-features.test.js +0 -850
  741. package/tests/parser-executor.test.d.ts +0 -2
  742. package/tests/parser-executor.test.d.ts.map +0 -1
  743. package/tests/parser-executor.test.js +0 -25
  744. package/tests/sftp.test.d.ts +0 -2
  745. package/tests/sftp.test.d.ts.map +0 -1
  746. package/tests/sftp.test.js +0 -246
  747. package/tests/ssh-exec.test.d.ts +0 -2
  748. package/tests/ssh-exec.test.d.ts.map +0 -1
  749. package/tests/ssh-exec.test.js +0 -39
  750. package/tests/test-helper.d.ts +0 -56
  751. package/tests/test-helper.d.ts.map +0 -1
  752. package/tests/test-helper.js +0 -71
  753. package/tests/users.test.d.ts +0 -2
  754. package/tests/users.test.d.ts.map +0 -1
  755. package/tests/users.test.js +0 -71
  756. package/tests/web.test.d.ts +0 -2
  757. package/tests/web.test.d.ts.map +0 -1
  758. package/tests/web.test.js +0 -149
  759. /package/{src → dist}/Honeypot/index.d.ts +0 -0
  760. /package/{src → dist}/SSHClient/index.d.ts +0 -0
  761. /package/{src → dist}/SSHMimic/exec.d.ts +0 -0
  762. /package/{src → dist}/SSHMimic/executor.d.ts +0 -0
  763. /package/{src → dist}/SSHMimic/hostKey.d.ts +0 -0
  764. /package/{src → dist}/SSHMimic/index.d.ts +0 -0
  765. /package/{src → dist}/SSHMimic/loginBanner.d.ts +0 -0
  766. /package/{src → dist}/SSHMimic/loginFormat.d.ts +0 -0
  767. /package/{src → dist}/SSHMimic/prompt.d.ts +0 -0
  768. /package/{src → dist}/SSHMimic/sftp.d.ts +0 -0
  769. /package/{src → dist}/VirtualFileSystem/binaryPack.d.ts +0 -0
  770. /package/{src → dist}/VirtualFileSystem/index.d.ts +0 -0
  771. /package/{src → dist}/VirtualFileSystem/internalTypes.d.ts +0 -0
  772. /package/{src → dist}/VirtualFileSystem/path.d.ts +0 -0
  773. /package/{src → dist}/VirtualPackageManager/index.d.ts +0 -0
  774. /package/{src → dist}/VirtualShell/index.d.ts +0 -0
  775. /package/{src → dist}/VirtualShell/shell.d.ts +0 -0
  776. /package/{src → dist}/VirtualShell/shellParser.d.ts +0 -0
  777. /package/{src → dist}/VirtualUserManager/index.d.ts +0 -0
  778. /package/{src → dist}/commands/adduser.d.ts +0 -0
  779. /package/{src → dist}/commands/alias.d.ts +0 -0
  780. /package/{src → dist}/commands/apt.d.ts +0 -0
  781. /package/{src → dist}/commands/awk.d.ts +0 -0
  782. /package/{src → dist}/commands/base64.d.ts +0 -0
  783. /package/{src → dist}/commands/cat.d.ts +0 -0
  784. /package/{src → dist}/commands/cd.d.ts +0 -0
  785. /package/{src → dist}/commands/chmod.d.ts +0 -0
  786. /package/{src → dist}/commands/clear.d.ts +0 -0
  787. /package/{src → dist}/commands/command-helpers.d.ts +0 -0
  788. /package/{src → dist}/commands/cp.d.ts +0 -0
  789. /package/{src → dist}/commands/curl.d.ts +0 -0
  790. /package/{src → dist}/commands/cut.d.ts +0 -0
  791. /package/{src → dist}/commands/date.d.ts +0 -0
  792. /package/{src → dist}/commands/declare.d.ts +0 -0
  793. /package/{src → dist}/commands/deluser.d.ts +0 -0
  794. /package/{src → dist}/commands/df.d.ts +0 -0
  795. /package/{src → dist}/commands/diff.d.ts +0 -0
  796. /package/{src → dist}/commands/dpkg.d.ts +0 -0
  797. /package/{src → dist}/commands/du.d.ts +0 -0
  798. /package/{src → dist}/commands/echo.d.ts +0 -0
  799. /package/{src → dist}/commands/env.d.ts +0 -0
  800. /package/{src → dist}/commands/exit.d.ts +0 -0
  801. /package/{src → dist}/commands/export.d.ts +0 -0
  802. /package/{src → dist}/commands/find.d.ts +0 -0
  803. /package/{src → dist}/commands/free.d.ts +0 -0
  804. /package/{src → dist}/commands/grep.d.ts +0 -0
  805. /package/{src → dist}/commands/groups.d.ts +0 -0
  806. /package/{src → dist}/commands/gzip.d.ts +0 -0
  807. /package/{src → dist}/commands/head.d.ts +0 -0
  808. /package/{src → dist}/commands/help.d.ts +0 -0
  809. /package/{src → dist}/commands/helpers.d.ts +0 -0
  810. /package/{src → dist}/commands/history.d.ts +0 -0
  811. /package/{src → dist}/commands/hostname.d.ts +0 -0
  812. /package/{src → dist}/commands/htop.d.ts +0 -0
  813. /package/{src → dist}/commands/id.d.ts +0 -0
  814. /package/{src → dist}/commands/index.d.ts +0 -0
  815. /package/{src → dist}/commands/kill.d.ts +0 -0
  816. /package/{src → dist}/commands/ln.d.ts +0 -0
  817. /package/{src → dist}/commands/ls.d.ts +0 -0
  818. /package/{src → dist}/commands/lsb-release.d.ts +0 -0
  819. /package/{src → dist}/commands/man.d.ts +0 -0
  820. /package/{src → dist}/commands/mkdir.d.ts +0 -0
  821. /package/{src → dist}/commands/mv.d.ts +0 -0
  822. /package/{src → dist}/commands/nano.d.ts +0 -0
  823. /package/{src → dist}/commands/neofetch.d.ts +0 -0
  824. /package/{src → dist}/commands/node.d.ts +0 -0
  825. /package/{src → dist}/commands/npm.d.ts +0 -0
  826. /package/{src → dist}/commands/passwd.d.ts +0 -0
  827. /package/{src → dist}/commands/ping.d.ts +0 -0
  828. /package/{src → dist}/commands/printf.d.ts +0 -0
  829. /package/{src → dist}/commands/ps.d.ts +0 -0
  830. /package/{src → dist}/commands/pwd.d.ts +0 -0
  831. /package/{src → dist}/commands/python.d.ts +0 -0
  832. /package/{src → dist}/commands/read.d.ts +0 -0
  833. /package/{src → dist}/commands/registry.d.ts +0 -0
  834. /package/{src → dist}/commands/rm.d.ts +0 -0
  835. /package/{src → dist}/commands/runtime.d.ts +0 -0
  836. /package/{src → dist}/commands/sed.d.ts +0 -0
  837. /package/{src → dist}/commands/seq.d.ts +0 -0
  838. /package/{src → dist}/commands/set.d.ts +0 -0
  839. /package/{src → dist}/commands/sh.d.ts +0 -0
  840. /package/{src → dist}/commands/shift.d.ts +0 -0
  841. /package/{src → dist}/commands/sleep.d.ts +0 -0
  842. /package/{src → dist}/commands/sort.d.ts +0 -0
  843. /package/{src → dist}/commands/source.d.ts +0 -0
  844. /package/{src → dist}/commands/stat.d.ts +0 -0
  845. /package/{src → dist}/commands/su.d.ts +0 -0
  846. /package/{src → dist}/commands/sudo.d.ts +0 -0
  847. /package/{src → dist}/commands/tail.d.ts +0 -0
  848. /package/{src → dist}/commands/tar.d.ts +0 -0
  849. /package/{src → dist}/commands/tee.d.ts +0 -0
  850. /package/{src → dist}/commands/test.d.ts +0 -0
  851. /package/{src → dist}/commands/touch.d.ts +0 -0
  852. /package/{src → dist}/commands/tr.d.ts +0 -0
  853. /package/{src → dist}/commands/tree.d.ts +0 -0
  854. /package/{src → dist}/commands/true.d.ts +0 -0
  855. /package/{src → dist}/commands/type.d.ts +0 -0
  856. /package/{src → dist}/commands/uname.d.ts +0 -0
  857. /package/{src → dist}/commands/uniq.d.ts +0 -0
  858. /package/{src → dist}/commands/unset.d.ts +0 -0
  859. /package/{src → dist}/commands/uptime.d.ts +0 -0
  860. /package/{src → dist}/commands/wc.d.ts +0 -0
  861. /package/{src → dist}/commands/wget.d.ts +0 -0
  862. /package/{src → dist}/commands/which.d.ts +0 -0
  863. /package/{src → dist}/commands/who.d.ts +0 -0
  864. /package/{src → dist}/commands/whoami.d.ts +0 -0
  865. /package/{src → dist}/commands/xargs.d.ts +0 -0
  866. /package/{src → dist}/index.d.ts +0 -0
  867. /package/{src → dist}/modules/linuxRootfs.d.ts +0 -0
  868. /package/{src → dist}/modules/neofetch.d.ts +0 -0
  869. /package/{src → dist}/modules/shellInteractive.d.ts +0 -0
  870. /package/{src → dist}/modules/shellRuntime.d.ts +0 -0
  871. /package/{src → dist}/self-standalone.d.ts +0 -0
  872. /package/{src → dist}/standalone-wo-sftp.d.ts +0 -0
  873. /package/{src → dist}/standalone.d.ts +0 -0
  874. /package/{src → dist}/types/commands.d.ts +0 -0
  875. /package/{src → dist}/types/pipeline.d.ts +0 -0
  876. /package/{src → dist}/types/streams.d.ts +0 -0
  877. /package/{src → dist}/types/vfs.d.ts +0 -0
  878. /package/{src → dist}/utils/expand.d.ts +0 -0
  879. /package/{src → dist}/utils/perfLogger.d.ts +0 -0
  880. /package/{src → dist}/utils/tokenize.d.ts +0 -0
  881. /package/{src → dist}/utils/vfsDiff.d.ts +0 -0
  882. /package/{src → dist}/web-api.d.ts +0 -0
  883. /package/{src → dist}/web-full.d.ts +0 -0
  884. /package/{src → dist}/web.d.ts +0 -0
@@ -0,0 +1,265 @@
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>VirtualShell | typescript-virtual-container</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</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">VirtualShell</a></li></ul><h1>Class VirtualShell</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Coordinates the virtual filesystem, user manager, package manager, and
2
+ command runtime for a single isolated shell environment.</p>
3
+ <p>Each instance owns its own VFS tree, user database, package registry, and
4
+ session state — multiple instances are fully independent.</p>
5
+ <p>Instances are consumed both by the SSH/SFTP server facades and directly via
6
+ the programmatic <code>SshClient</code> API.</p>
7
+ </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" 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><pre><code class="ts"><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;my-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/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">result</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;uname -a&quot;</span><span class="hl-1">);</span>
8
+ </code><button type="button">Copy</button></pre>
9
+
10
+ </div><div class="tsd-tag-fires"><h4 class="tsd-anchor-link" id="fires">Fires<a href="#fires" 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><p>VirtualShell#initialized Emitted once the VFS and users are ready.</p>
11
+ </div><div class="tsd-tag-fires"><h4 class="tsd-anchor-link" id="fires-1">Fires<a href="#fires-1" 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><p>VirtualShell#command Emitted after every command execution.</p>
12
+ </div><div class="tsd-tag-fires"><h4 class="tsd-anchor-link" id="fires-2">Fires<a href="#fires-2" 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><p>VirtualShell#session:start Emitted when an interactive session opens.</p>
13
+ </div></div></section><section class="tsd-panel tsd-hierarchy" data-refl="685"><h4>Hierarchy</h4><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-signature-type">EventEmitter</span><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">VirtualShell</span></li></ul></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L133">src/VirtualShell/index.ts:133</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">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
14
+ </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#hostname" 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>hostname</span></a>
15
+ <a href="#packagemanager" 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>package<wbr/>Manager</span></a>
16
+ <a href="#properties" 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>properties</span></a>
17
+ <a href="#starttime" 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>start<wbr/>Time</span></a>
18
+ <a href="#users" 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>users</span></a>
19
+ <a href="#vfs" 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>vfs</span></a>
20
+ </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="#capturerejectionsymbol" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>[capture<wbr/>Rejection<wbr/>Symbol]?</span></a>
21
+ <a href="#addcommand" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Command</span></a>
22
+ <a href="#addlistener" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Listener</span></a>
23
+ <a href="#emit" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>emit</span></a>
24
+ <a href="#ensureinitialized" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>ensure<wbr/>Initialized</span></a>
25
+ <a href="#eventnames" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>event<wbr/>Names</span></a>
26
+ <a href="#executecommand" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>execute<wbr/>Command</span></a>
27
+ <a href="#gethostname" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Hostname</span></a>
28
+ <a href="#getmaxlisteners" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Max<wbr/>Listeners</span></a>
29
+ <a href="#getmounts" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Mounts</span></a>
30
+ <a href="#getusers" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Users</span></a>
31
+ <a href="#getvfs" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Vfs</span></a>
32
+ <a href="#listenercount" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>listener<wbr/>Count</span></a>
33
+ <a href="#listeners" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>listeners</span></a>
34
+ <a href="#mount" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>mount</span></a>
35
+ <a href="#off" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>off</span></a>
36
+ <a href="#on" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>on</span></a>
37
+ <a href="#once" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>once</span></a>
38
+ <a href="#prependlistener" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>prepend<wbr/>Listener</span></a>
39
+ <a href="#prependoncelistener" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>prepend<wbr/>Once<wbr/>Listener</span></a>
40
+ <a href="#rawlisteners" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>raw<wbr/>Listeners</span></a>
41
+ <a href="#refreshprocfs" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>refresh<wbr/>Proc<wbr/>Fs</span></a>
42
+ <a href="#refreshprocsessions" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>refresh<wbr/>Proc<wbr/>Sessions</span></a>
43
+ <a href="#removealllisteners" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>remove<wbr/>All<wbr/>Listeners</span></a>
44
+ <a href="#removelistener" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>remove<wbr/>Listener</span></a>
45
+ <a href="#setmaxlisteners" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Max<wbr/>Listeners</span></a>
46
+ <a href="#startinteractivesession" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>start<wbr/>Interactive<wbr/>Session</span></a>
47
+ <a href="#syncpasswd" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>sync<wbr/>Passwd</span></a>
48
+ <a href="#unmount" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>unmount</span></a>
49
+ <a href="#writefileasuser" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>write<wbr/>File<wbr/>As<wbr/>User</span></a>
50
+ </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-Constructors"><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>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructorvirtualshell"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">VirtualShell</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">hostname</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">properties</span><span class="tsd-signature-symbol">?:</span> <a href="../interfaces/ShellProperties.html" class="tsd-signature-type tsd-kind-interface">ShellProperties</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">vfsOptionsOrInstance</span><span class="tsd-signature-symbol">?:</span><br/>        <span class="tsd-signature-symbol">|</span> <a href="../interfaces/VfsOptions.html" class="tsd-signature-type tsd-kind-interface">VfsOptions</a><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">VirtualShellVfsLike</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">VirtualShellVfsOptions</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">VirtualShell</a><a href="#constructorvirtualshell" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Creates a new virtual shell instance.</p>
51
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">hostname</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Virtual hostname used for prompts and idents.</p>
52
+ </div></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">properties</span>: <a href="../interfaces/ShellProperties.html" class="tsd-signature-type tsd-kind-interface">ShellProperties</a></span><div class="tsd-comment tsd-typography"><p>Customizable properties shown in <code>uname -a</code> and similar commands.</p>
53
+ </div></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">vfsOptionsOrInstance</span>: <a href="../interfaces/VfsOptions.html" class="tsd-signature-type tsd-kind-interface">VfsOptions</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">VirtualShellVfsLike</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">VirtualShellVfsOptions</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">VirtualShell</a></h4><aside class="tsd-sources"><p>Overrides EventEmitter.constructor</p><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L155">src/VirtualShell/index.ts:155</a></li></ul></aside></div></li></ul></section></section></details><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="hostname"><span>hostname</span><a href="#hostname" 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">hostname</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Hostname shown in the shell prompt and SSH ident string.</p>
54
+ </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L141">src/VirtualShell/index.ts:141</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="packagemanager"><span>package<wbr/>Manager</span><a href="#packagemanager" 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">packageManager</span><span class="tsd-signature-symbol">:</span> <a href="VirtualPackageManager.html" class="tsd-signature-type tsd-kind-class">VirtualPackageManager</a></div><div class="tsd-comment tsd-typography"><p>APT/dpkg package manager backed by the built-in package registry.</p>
55
+ </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L139">src/VirtualShell/index.ts:139</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="properties"><span>properties</span><a href="#properties" 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">properties</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/ShellProperties.html" class="tsd-signature-type tsd-kind-interface">ShellProperties</a></div><div class="tsd-comment tsd-typography"><p>Distro identity strings surfaced by <code>uname</code>, <code>neofetch</code>, etc.</p>
56
+ </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L143">src/VirtualShell/index.ts:143</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="starttime"><span>start<wbr/>Time</span><a href="#starttime" 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">startTime</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Unix ms timestamp of shell creation — used by <code>uptime</code> and <code>/proc/uptime</code>.</p>
57
+ </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L145">src/VirtualShell/index.ts:145</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="users"><span>users</span><a href="#users" 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">users</span><span class="tsd-signature-symbol">:</span> <a href="VirtualUserManager.html" class="tsd-signature-type tsd-kind-class">VirtualUserManager</a></div><div class="tsd-comment tsd-typography"><p>Virtual user database — use for auth, quotas, and session tracking.</p>
58
+ </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L137">src/VirtualShell/index.ts:137</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="vfs"><span>vfs</span><a href="#vfs" 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">vfs</span><span class="tsd-signature-symbol">:</span> <a href="VirtualFileSystem.html" class="tsd-signature-type tsd-kind-class">VirtualFileSystem</a></div><div class="tsd-comment tsd-typography"><p>Backing virtual filesystem — use for direct path operations.</p>
59
+ </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L135">src/VirtualShell/index.ts:135</a></li></ul></aside></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><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>Methods</h2></summary><section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="capturerejectionsymbol"><code class="tsd-tag">Optional</code><span>[capture<wbr/>Rejection<wbr/>Symbol]</span><a href="#capturerejectionsymbol" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="capturerejectionsymbol-1"><span class="tsd-kind-call-signature">&quot;[captureRejectionSymbol]&quot;</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">error</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Error</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">event</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#capturerejectionsymbol-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>The <code>Symbol.for('nodejs.rejection')</code> method is called in case a
60
+ promise rejection happens when emitting an event and
61
+ <code>captureRejections</code> is enabled on the emitter.
62
+ It is possible to use <code>events.captureRejectionSymbol</code> in
63
+ place of <code>Symbol.for('nodejs.rejection')</code>.</p>
64
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1">, </span><span class="hl-5">captureRejectionSymbol</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">class</span><span class="hl-1"> </span><span class="hl-17">MyClass</span><span class="hl-1"> </span><span class="hl-4">extends</span><span class="hl-1"> </span><span class="hl-17">EventEmitter</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">constructor</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-4">super</span><span class="hl-1">({ </span><span class="hl-5">captureRejections:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1"> });</span><br/><span class="hl-1"> }</span><br/><br/><span class="hl-1"> [</span><span class="hl-5">captureRejectionSymbol</span><span class="hl-1">](</span><span class="hl-5">err</span><span class="hl-1">, </span><span class="hl-5">event</span><span class="hl-1">, ...</span><span class="hl-5">args</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><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-2">&#39;rejection happened for&#39;</span><span class="hl-1">, </span><span class="hl-5">event</span><span class="hl-1">, </span><span class="hl-2">&#39;with&#39;</span><span class="hl-1">, </span><span class="hl-5">err</span><span class="hl-1">, ...</span><span class="hl-5">args</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-4">this</span><span class="hl-1">.</span><span class="hl-0">destroy</span><span class="hl-1">(</span><span class="hl-5">err</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><br/><span class="hl-1"> </span><span class="hl-0">destroy</span><span class="hl-1">(</span><span class="hl-5">err</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-3">// Tear the resource down here.</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span>
65
+ </code><button type="button">Copy</button></pre>
66
+
67
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">error</span>: <span class="tsd-signature-type">Error</span></span></li><li><span><span class="tsd-kind-parameter">event</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li><li><span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span>: <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since">Since<a href="#since" 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><p>v13.4.0, v12.16.0</p>
68
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.[captureRejectionSymbol]</p><ul><li>Defined in node_modules/@types/node/events.d.ts:87</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="addcommand"><span>add<wbr/>Command</span><a href="#addcommand" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="addcommand-1"><span class="tsd-kind-call-signature">addCommand</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">params</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">callback</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">ctx</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/CommandContext.html" class="tsd-signature-type tsd-kind-interface">CommandContext</a><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <a href="../interfaces/CommandResult.html" class="tsd-signature-type tsd-kind-interface">CommandResult</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/CommandResult.html" class="tsd-signature-type tsd-kind-interface">CommandResult</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#addcommand-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Registers a new command in the shell runtime.</p>
69
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">name</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Case-insensitive command name (no spaces).</p>
70
+ </div></li><li><span><span class="tsd-kind-parameter">params</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></span><div class="tsd-comment tsd-typography"><p>List of parameter names for help text (no validation).</p>
71
+ </div></li><li><span><span class="tsd-kind-parameter">callback</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">ctx</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/CommandContext.html" class="tsd-signature-type tsd-kind-interface">CommandContext</a><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <a href="../interfaces/CommandResult.html" class="tsd-signature-type tsd-kind-interface">CommandResult</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/CommandResult.html" class="tsd-signature-type tsd-kind-interface">CommandResult</a><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>Function invoked with command context on execution.</p>
72
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L212">src/VirtualShell/index.ts:212</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="addlistener"><span>add<wbr/>Listener</span><a href="#addlistener" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="addlistener-1"><span class="tsd-kind-call-signature">addListener</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#addlistenere">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#addlistener-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Alias for <code>emitter.on(eventName, listener)</code>.</p>
73
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="addlistenere"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-1">Since<a href="#since-1" 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><p>v0.1.26</p>
74
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.addListener</p><ul><li>Defined in node_modules/@types/node/events.d.ts:92</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="emit"><span>emit</span><a href="#emit" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="emit-1"><span class="tsd-kind-call-signature">emit</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#emite">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><a href="#emit-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Synchronously calls each of the listeners registered for the event named
75
+ <code>eventName</code>, in the order they were registered, passing the supplied arguments
76
+ to each.</p>
77
+ <p>Returns <code>true</code> if the event had listeners, <code>false</code> otherwise.</p>
78
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">myEmitter</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">EventEmitter</span><span class="hl-1">();</span><br/><br/><span class="hl-3">// First listener</span><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-0">firstListener</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><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-2">&#39;Helloooo! first listener&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><span class="hl-3">// Second listener</span><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-0">secondListener</span><span class="hl-1">(</span><span class="hl-5">arg1</span><span class="hl-1">, </span><span class="hl-5">arg2</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><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-2">`event with parameters </span><span class="hl-4">${</span><span class="hl-5">arg1</span><span class="hl-4">}</span><span class="hl-2">, </span><span class="hl-4">${</span><span class="hl-5">arg2</span><span class="hl-4">}</span><span class="hl-2"> in second listener`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><span class="hl-3">// Third listener</span><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-0">thirdListener</span><span class="hl-1">(...</span><span class="hl-5">args</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">parameters</span><span class="hl-1"> = </span><span class="hl-5">args</span><span class="hl-1">.</span><span class="hl-0">join</span><span class="hl-1">(</span><span class="hl-2">&#39;, &#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><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-2">`event with parameters </span><span class="hl-4">${</span><span class="hl-5">parameters</span><span class="hl-4">}</span><span class="hl-2"> in third listener`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><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">myEmitter</span><span class="hl-1">.</span><span class="hl-0">listeners</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">));</span><br/><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-8">1</span><span class="hl-1">, </span><span class="hl-8">2</span><span class="hl-1">, </span><span class="hl-8">3</span><span class="hl-1">, </span><span class="hl-8">4</span><span class="hl-1">, </span><span class="hl-8">5</span><span class="hl-1">);</span><br/><br/><span class="hl-3">// Prints:</span><br/><span class="hl-3">// [</span><br/><span class="hl-3">// [Function: firstListener],</span><br/><span class="hl-3">// [Function: secondListener],</span><br/><span class="hl-3">// [Function: thirdListener]</span><br/><span class="hl-3">// ]</span><br/><span class="hl-3">// Helloooo! first listener</span><br/><span class="hl-3">// event with parameters 1, 2 in second listener</span><br/><span class="hl-3">// event with parameters 1, 2, 3, 4, 5 in third listener</span>
79
+ </code><button type="button">Copy</button></pre>
80
+
81
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="emite"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li><li><span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span>: <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-2">Since<a href="#since-2" 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><p>v0.1.26</p>
82
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.emit</p><ul><li>Defined in node_modules/@types/node/events.d.ts:134</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="ensureinitialized"><span>ensure<wbr/>Initialized</span><a href="#ensureinitialized" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="ensureinitialized-1"><span class="tsd-kind-call-signature">ensureInitialized</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#ensureinitialized-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Ensures initialization is complete before allowing operations.
83
+ Call this before any authentication or command execution.</p>
84
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L200">src/VirtualShell/index.ts:200</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="eventnames"><span>event<wbr/>Names</span><a href="#eventnames" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="eventnames-1"><span class="tsd-kind-call-signature">eventNames</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> (<span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span>)<span class="tsd-signature-symbol">[]</span><a href="#eventnames-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns an array listing the events for which the emitter has registered
85
+ listeners.</p>
86
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">myEE</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">EventEmitter</span><span class="hl-1">();</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {});</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;bar&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {});</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">sym</span><span class="hl-1"> = </span><span class="hl-0">Symbol</span><span class="hl-1">(</span><span class="hl-2">&#39;symbol&#39;</span><span class="hl-1">);</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-5">sym</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {});</span><br/><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">myEE</span><span class="hl-1">.</span><span class="hl-0">eventNames</span><span class="hl-1">());</span><br/><span class="hl-3">// Prints: [ &#39;foo&#39;, &#39;bar&#39;, Symbol(symbol) ]</span>
87
+ </code><button type="button">Copy</button></pre>
88
+
89
+ </div><h4 class="tsd-returns-title">Returns (<span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span>)<span class="tsd-signature-symbol">[]</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-3">Since<a href="#since-3" 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><p>v6.0.0</p>
90
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.eventNames</p><ul><li>Defined in node_modules/@types/node/events.d.ts:154</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="executecommand"><span>execute<wbr/>Command</span><a href="#executecommand" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="executecommand-1"><span class="tsd-kind-call-signature">executeCommand</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">rawInput</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">authUser</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">cwd</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#executecommand-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Executes a raw command line string programmatically.</p>
91
+ <p>Supports the full shell operator set (<code>&amp;&amp;</code>, <code>||</code>, <code>;</code>, <code>|</code>, <code>&gt;</code>, <code>&lt;</code>,
92
+ <code>$(cmd)</code>) and alias expansion. The result is emitted via the
93
+ <code>&quot;command&quot;</code> event but not returned — use <code>SshClient.exec()</code> for a
94
+ result-returning wrapper.</p>
95
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">rawInput</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Unparsed command line (e.g. <code>&quot;ls -la /tmp&quot;</code>).</p>
96
+ </div></li><li><span><span class="tsd-kind-parameter">authUser</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Username to run the command as.</p>
97
+ </div></li><li><span><span class="tsd-kind-parameter">cwd</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Current working directory for path resolution.</p>
98
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L237">src/VirtualShell/index.ts:237</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="gethostname"><span>get<wbr/>Hostname</span><a href="#gethostname" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="gethostname-1"><span class="tsd-kind-call-signature">getHostname</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#gethostname-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns hostname shown in prompts and idents.</p>
99
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><p>Configured hostname label.</p>
100
+ <aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L387">src/VirtualShell/index.ts:387</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="getmaxlisteners"><span>get<wbr/>Max<wbr/>Listeners</span><a href="#getmaxlisteners" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="getmaxlisteners-1"><span class="tsd-kind-call-signature">getMaxListeners</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><a href="#getmaxlisteners-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns the current max listener value for the <code>EventEmitter</code> which is either
101
+ set by <code>emitter.setMaxListeners(n)</code> or defaults to
102
+ <code>events.defaultMaxListeners</code>.</p>
103
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-4">Since<a href="#since-4" 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><p>v1.0.0</p>
104
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.getMaxListeners</p><ul><li>Defined in node_modules/@types/node/events.d.ts:161</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="getmounts"><span>get<wbr/>Mounts</span><a href="#getmounts" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="getmounts-1"><span class="tsd-kind-call-signature">getMounts</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">hostPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">readOnly</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">vPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">[]</span><a href="#getmounts-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>List all active mounts.</p>
105
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">hostPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">readOnly</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">vPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">[]</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L333">src/VirtualShell/index.ts:333</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="getusers"><span>get<wbr/>Users</span><a href="#getusers" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="getusers-1"><span class="tsd-kind-call-signature">getUsers</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <a href="VirtualUserManager.html" class="tsd-signature-type tsd-kind-class">VirtualUserManager</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><a href="#getusers-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns user manager instance after server started.</p>
106
+ </div><h4 class="tsd-returns-title">Returns <a href="VirtualUserManager.html" class="tsd-signature-type tsd-kind-class">VirtualUserManager</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></h4><p>VirtualUserManager or null when not started.</p>
107
+ <aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L378">src/VirtualShell/index.ts:378</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="getvfs"><span>get<wbr/>Vfs</span><a href="#getvfs" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="getvfs-1"><span class="tsd-kind-call-signature">getVfs</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <a href="VirtualFileSystem.html" class="tsd-signature-type tsd-kind-class">VirtualFileSystem</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><a href="#getvfs-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns virtual filesystem instance after server started.</p>
108
+ </div><h4 class="tsd-returns-title">Returns <a href="VirtualFileSystem.html" class="tsd-signature-type tsd-kind-class">VirtualFileSystem</a> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></h4><p>VirtualFileSystem or null when not started.</p>
109
+ <aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L369">src/VirtualShell/index.ts:369</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="listenercount"><span>listener<wbr/>Count</span><a href="#listenercount" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="listenercount-1"><span class="tsd-kind-call-signature">listenerCount</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#listenercounte">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><a href="#listenercount-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns the number of listeners listening for the event named <code>eventName</code>.
110
+ If <code>listener</code> is provided, it will return how many times the listener is found
111
+ in the list of the listeners of the event.</p>
112
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="listenercounte"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span><div class="tsd-comment tsd-typography"><p>The name of the event being listened for</p>
113
+ </div></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span><div class="tsd-comment tsd-typography"><p>The event handler function</p>
114
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-5">Since<a href="#since-5" 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><p>v3.2.0</p>
115
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.listenerCount</p><ul><li>Defined in node_modules/@types/node/events.d.ts:170</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="listeners"><span>listeners</span><a href="#listeners" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="listeners-1"><span class="tsd-kind-call-signature">listeners</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#listenerse">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> (<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span>)<span class="tsd-signature-symbol">[]</span><a href="#listeners-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns a copy of the array of listeners for the event named <code>eventName</code>.</p>
116
+ <pre><code class="js"><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, (</span><span class="hl-5">stream</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;someone connected!&#39;</span><span class="hl-1">);</span><br/><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">util</span><span class="hl-1">.</span><span class="hl-0">inspect</span><span class="hl-1">(</span><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">listeners</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">)));</span><br/><span class="hl-3">// Prints: [ [Function] ]</span>
117
+ </code><button type="button">Copy</button></pre>
118
+
119
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="listenerse"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></div><h4 class="tsd-returns-title">Returns (<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span>)<span class="tsd-signature-symbol">[]</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-6">Since<a href="#since-6" 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><p>v0.1.26</p>
120
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.listeners</p><ul><li>Defined in node_modules/@types/node/events.d.ts:186</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="mount"><span>mount</span><a href="#mount" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="mount-1"><span class="tsd-kind-call-signature">mount</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">vPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">hostPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">readOnly</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#mount-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Mount a host directory into the VFS at <code>vPath</code>.</p>
121
+ <p>Delegates file operations inside <code>vPath</code> to the host filesystem via
122
+ <code>node:fs</code>. Silently ignored in browser environments.</p>
123
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">vPath</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Absolute path inside the VM (e.g. <code>&quot;/app&quot;</code>).</p>
124
+ </div></li><li><span><span class="tsd-kind-parameter">hostPath</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Path on the host — relative paths are resolved from <code>process.cwd()</code>.</p>
125
+ </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">readOnly</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol"> = {}</span></span><div class="tsd-comment tsd-typography"><p><code>{ readOnly?: boolean }</code> — default <code>true</code>.</p>
126
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-1">Example<a href="#example-1" 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><pre><code class="ts"><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;dev-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-5">shell</span><span class="hl-1">.</span><span class="hl-0">mount</span><span class="hl-1">(</span><span class="hl-2">&quot;/workspace&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;./my-project&quot;</span><span class="hl-1">);</span><br/><span class="hl-3">// shell commands can now read ./my-project files via /workspace</span>
127
+ </code><button type="button">Copy</button></pre>
128
+
129
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L319">src/VirtualShell/index.ts:319</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="off"><span>off</span><a href="#off" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="off-1"><span class="tsd-kind-call-signature">off</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#offe">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#off-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Alias for <code>emitter.removeListener()</code>.</p>
130
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="offe"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-7">Since<a href="#since-7" 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><p>v10.0.0</p>
131
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.off</p><ul><li>Defined in node_modules/@types/node/events.d.ts:191</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="on"><span>on</span><a href="#on" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="on-1"><span class="tsd-kind-call-signature">on</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#one">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#on-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Adds the <code>listener</code> function to the end of the listeners array for the
132
+ event named <code>eventName</code>. No checks are made to see if the <code>listener</code> has
133
+ already been added. Multiple calls passing the same combination of <code>eventName</code>
134
+ and <code>listener</code> will result in the <code>listener</code> being added, and called, multiple
135
+ times.</p>
136
+ <pre><code class="js"><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, (</span><span class="hl-5">stream</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;someone connected!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
137
+ </code><button type="button">Copy</button></pre>
138
+
139
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
140
+ <p>By default, event listeners are invoked in the order they are added. The
141
+ <code>emitter.prependListener()</code> method can be used as an alternative to add the
142
+ event listener to the beginning of the listeners array.</p>
143
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">myEE</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">EventEmitter</span><span class="hl-1">();</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> </span><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-2">&#39;a&#39;</span><span class="hl-1">));</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">prependListener</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> </span><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-2">&#39;b&#39;</span><span class="hl-1">));</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">);</span><br/><span class="hl-3">// Prints:</span><br/><span class="hl-3">// b</span><br/><span class="hl-3">// a</span>
144
+ </code><button type="button">Copy</button></pre>
145
+
146
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="one"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span><div class="tsd-comment tsd-typography"><p>The name of the event.</p>
147
+ </div></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span><div class="tsd-comment tsd-typography"><p>The callback function</p>
148
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-8">Since<a href="#since-8" 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><p>v0.1.101</p>
149
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.on</p><ul><li>Defined in node_modules/@types/node/events.d.ts:225</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="once"><span>once</span><a href="#once" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="once-1"><span class="tsd-kind-call-signature">once</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#oncee">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#once-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Adds a <strong>one-time</strong> <code>listener</code> function for the event named <code>eventName</code>. The
150
+ next time <code>eventName</code> is triggered, this listener is removed and then invoked.</p>
151
+ <pre><code class="js"><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">once</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, (</span><span class="hl-5">stream</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;Ah, we have our first user!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
152
+ </code><button type="button">Copy</button></pre>
153
+
154
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
155
+ <p>By default, event listeners are invoked in the order they are added. The
156
+ <code>emitter.prependOnceListener()</code> method can be used as an alternative to add the
157
+ event listener to the beginning of the listeners array.</p>
158
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">myEE</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">EventEmitter</span><span class="hl-1">();</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">once</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> </span><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-2">&#39;a&#39;</span><span class="hl-1">));</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">prependOnceListener</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> </span><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-2">&#39;b&#39;</span><span class="hl-1">));</span><br/><span class="hl-5">myEE</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;foo&#39;</span><span class="hl-1">);</span><br/><span class="hl-3">// Prints:</span><br/><span class="hl-3">// b</span><br/><span class="hl-3">// a</span>
159
+ </code><button type="button">Copy</button></pre>
160
+
161
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="oncee"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span><div class="tsd-comment tsd-typography"><p>The name of the event.</p>
162
+ </div></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span><div class="tsd-comment tsd-typography"><p>The callback function</p>
163
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-9">Since<a href="#since-9" 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><p>v0.3.0</p>
164
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.once</p><ul><li>Defined in node_modules/@types/node/events.d.ts:256</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="prependlistener"><span>prepend<wbr/>Listener</span><a href="#prependlistener" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="prependlistener-1"><span class="tsd-kind-call-signature">prependListener</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#prependlistenere">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#prependlistener-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Adds the <code>listener</code> function to the <em>beginning</em> of the listeners array for the
165
+ event named <code>eventName</code>. No checks are made to see if the <code>listener</code> has
166
+ already been added. Multiple calls passing the same combination of <code>eventName</code>
167
+ and <code>listener</code> will result in the <code>listener</code> being added, and called, multiple
168
+ times.</p>
169
+ <pre><code class="js"><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">prependListener</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, (</span><span class="hl-5">stream</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;someone connected!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
170
+ </code><button type="button">Copy</button></pre>
171
+
172
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
173
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="prependlistenere"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span><div class="tsd-comment tsd-typography"><p>The name of the event.</p>
174
+ </div></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span><div class="tsd-comment tsd-typography"><p>The callback function</p>
175
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-10">Since<a href="#since-10" 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><p>v6.0.0</p>
176
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.prependListener</p><ul><li>Defined in node_modules/@types/node/events.d.ts:275</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="prependoncelistener"><span>prepend<wbr/>Once<wbr/>Listener</span><a href="#prependoncelistener" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="prependoncelistener-1"><span class="tsd-kind-call-signature">prependOnceListener</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#prependoncelistenere">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#prependoncelistener-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Adds a <strong>one-time</strong> <code>listener</code> function for the event named <code>eventName</code> to the
177
+ <em>beginning</em> of the listeners array. The next time <code>eventName</code> is triggered, this
178
+ listener is removed, and then invoked.</p>
179
+ <pre><code class="js"><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">prependOnceListener</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, (</span><span class="hl-5">stream</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;Ah, we have our first user!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
180
+ </code><button type="button">Copy</button></pre>
181
+
182
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
183
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="prependoncelistenere"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span><div class="tsd-comment tsd-typography"><p>The name of the event.</p>
184
+ </div></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span><div class="tsd-comment tsd-typography"><p>The callback function</p>
185
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-11">Since<a href="#since-11" 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><p>v6.0.0</p>
186
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.prependOnceListener</p><ul><li>Defined in node_modules/@types/node/events.d.ts:292</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="rawlisteners"><span>raw<wbr/>Listeners</span><a href="#rawlisteners" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="rawlisteners-1"><span class="tsd-kind-call-signature">rawListeners</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rawlistenerse">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> (<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span>)<span class="tsd-signature-symbol">[]</span><a href="#rawlisteners-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns a copy of the array of listeners for the event named <code>eventName</code>,
187
+ including any wrappers (such as those created by <code>.once()</code>).</p>
188
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">emitter</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">EventEmitter</span><span class="hl-1">();</span><br/><span class="hl-5">emitter</span><span class="hl-1">.</span><span class="hl-0">once</span><span class="hl-1">(</span><span class="hl-2">&#39;log&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> </span><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-2">&#39;log once&#39;</span><span class="hl-1">));</span><br/><br/><span class="hl-3">// Returns a new Array with a function `onceWrapper` which has a property</span><br/><span class="hl-3">// `listener` which contains the original listener bound above</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">listeners</span><span class="hl-1"> = </span><span class="hl-5">emitter</span><span class="hl-1">.</span><span class="hl-0">rawListeners</span><span class="hl-1">(</span><span class="hl-2">&#39;log&#39;</span><span class="hl-1">);</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">logFnWrapper</span><span class="hl-1"> = </span><span class="hl-5">listeners</span><span class="hl-1">[</span><span class="hl-8">0</span><span class="hl-1">];</span><br/><br/><span class="hl-3">// Logs &quot;log once&quot; to the console and does not unbind the `once` event</span><br/><span class="hl-5">logFnWrapper</span><span class="hl-1">.</span><span class="hl-0">listener</span><span class="hl-1">();</span><br/><br/><span class="hl-3">// Logs &quot;log once&quot; to the console and removes the listener</span><br/><span class="hl-0">logFnWrapper</span><span class="hl-1">();</span><br/><br/><span class="hl-5">emitter</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;log&#39;</span><span class="hl-1">, () </span><span class="hl-4">=&gt;</span><span class="hl-1"> </span><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-2">&#39;log persistently&#39;</span><span class="hl-1">));</span><br/><span class="hl-3">// Will return a new Array with a single function bound by `.on()` above</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">newListeners</span><span class="hl-1"> = </span><span class="hl-5">emitter</span><span class="hl-1">.</span><span class="hl-0">rawListeners</span><span class="hl-1">(</span><span class="hl-2">&#39;log&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-3">// Logs &quot;log persistently&quot; twice</span><br/><span class="hl-5">newListeners</span><span class="hl-1">[</span><span class="hl-8">0</span><span class="hl-1">]();</span><br/><span class="hl-5">emitter</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;log&#39;</span><span class="hl-1">);</span>
189
+ </code><button type="button">Copy</button></pre>
190
+
191
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="rawlistenerse"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></div><h4 class="tsd-returns-title">Returns (<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span>)<span class="tsd-signature-symbol">[]</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-12">Since<a href="#since-12" 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><p>v9.4.0</p>
192
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.rawListeners</p><ul><li>Defined in node_modules/@types/node/events.d.ts:326</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="refreshprocfs"><span>refresh<wbr/>Proc<wbr/>Fs</span><a href="#refreshprocfs" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="refreshprocfs-1"><span class="tsd-kind-call-signature">refreshProcFs</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#refreshprocfs-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Refreshes the <code>/proc</code> virtual filesystem with current system state.</p>
193
+ <p>Updates <code>/proc/uptime</code>, <code>/proc/meminfo</code>, <code>/proc/cpuinfo</code>,
194
+ <code>/proc/version</code>, <code>/proc/loadavg</code>, <code>/proc/self</code>, and per-session
195
+ <code>/proc/&lt;pid&gt;</code> entries from live session and host data.</p>
196
+ <p>Called automatically during <code>bootstrapLinuxRootfs</code>. Call again before
197
+ reading <code>/proc</code> files for up-to-date values.</p>
198
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L291">src/VirtualShell/index.ts:291</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="refreshprocsessions"><span>refresh<wbr/>Proc<wbr/>Sessions</span><a href="#refreshprocsessions" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="refreshprocsessions-1"><span class="tsd-kind-call-signature">refreshProcSessions</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#refreshprocsessions-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Updates only the session-dependent <code>/proc</code> entries (<code>/proc/&lt;pid&gt;</code>,
199
+ <code>/proc/self</code>). Cheaper than a full <code>refreshProcFs()</code> — call this
200
+ whenever a session is registered or unregistered.</p>
201
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L342">src/VirtualShell/index.ts:342</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="removealllisteners"><span>remove<wbr/>All<wbr/>Listeners</span><a href="#removealllisteners" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="removealllisteners-1"><span class="tsd-kind-call-signature">removeAllListeners</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#removealllistenerse">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#removealllisteners-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Removes all listeners, or those of the specified <code>eventName</code>.</p>
202
+ <p>It is bad practice to remove listeners added elsewhere in the code,
203
+ particularly when the <code>EventEmitter</code> instance was created by some other
204
+ component or module (e.g. sockets or file streams).</p>
205
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
206
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="removealllistenerse"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-13">Since<a href="#since-13" 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><p>v0.1.26</p>
207
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.removeAllListeners</p><ul><li>Defined in node_modules/@types/node/events.d.ts:338</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="removelistener"><span>remove<wbr/>Listener</span><a href="#removelistener" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="removelistener-1"><span class="tsd-kind-call-signature">removeListener</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#removelistenere">E</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">eventName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">listener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#removelistener-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Removes the specified <code>listener</code> from the listener array for the event named
208
+ <code>eventName</code>.</p>
209
+ <pre><code class="js"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-0">callback</span><span class="hl-1"> = (</span><span class="hl-5">stream</span><span class="hl-1">) </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;someone connected!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">};</span><br/><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, </span><span class="hl-5">callback</span><span class="hl-1">);</span><br/><span class="hl-3">// ...</span><br/><span class="hl-5">server</span><span class="hl-1">.</span><span class="hl-0">removeListener</span><span class="hl-1">(</span><span class="hl-2">&#39;connection&#39;</span><span class="hl-1">, </span><span class="hl-5">callback</span><span class="hl-1">);</span>
210
+ </code><button type="button">Copy</button></pre>
211
+
212
+ <p><code>removeListener()</code> will remove, at most, one instance of a listener from the
213
+ listener array. If any single listener has been added multiple times to the
214
+ listener array for the specified <code>eventName</code>, then <code>removeListener()</code> must be
215
+ called multiple times to remove each instance.</p>
216
+ <p>Once an event is emitted, all listeners attached to it at the
217
+ time of emitting are called in order. This implies that any
218
+ <code>removeListener()</code> or <code>removeAllListeners()</code> calls <em>after</em> emitting and
219
+ <em>before</em> the last listener finishes execution will not remove them from
220
+ <code>emit()</code> in progress. Subsequent events behave as expected.</p>
221
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">class</span><span class="hl-1"> </span><span class="hl-17">MyEmitter</span><span class="hl-1"> </span><span class="hl-4">extends</span><span class="hl-1"> </span><span class="hl-17">EventEmitter</span><span class="hl-1"> {}</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">myEmitter</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">MyEmitter</span><span class="hl-1">();</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-0">callbackA</span><span class="hl-1"> = () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;A&#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">removeListener</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-5">callbackB</span><span class="hl-1">);</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-0">callbackB</span><span class="hl-1"> = () </span><span class="hl-4">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><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-2">&#39;B&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-5">callbackA</span><span class="hl-1">);</span><br/><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">, </span><span class="hl-5">callbackB</span><span class="hl-1">);</span><br/><br/><span class="hl-3">// callbackA removes listener callbackB but it will still be called.</span><br/><span class="hl-3">// Internal listener array at time of emit [callbackA, callbackB]</span><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">);</span><br/><span class="hl-3">// Prints:</span><br/><span class="hl-3">// A</span><br/><span class="hl-3">// B</span><br/><br/><span class="hl-3">// callbackB is now removed.</span><br/><span class="hl-3">// Internal listener array [callbackA]</span><br/><span class="hl-5">myEmitter</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;event&#39;</span><span class="hl-1">);</span><br/><span class="hl-3">// Prints:</span><br/><span class="hl-3">// A</span>
222
+ </code><button type="button">Copy</button></pre>
223
+
224
+ <p>Because listeners are managed using an internal array, calling this will
225
+ change the position indexes of any listener registered <em>after</em> the listener
226
+ being removed. This will not impact the order in which listeners are called,
227
+ but it means that any copies of the listener array as returned by
228
+ the <code>emitter.listeners()</code> method will need to be recreated.</p>
229
+ <p>When a single function has been added as a handler multiple times for a single
230
+ event (as in the example below), <code>removeListener()</code> will remove the most
231
+ recently added instance. In the example the <code>once('ping')</code>
232
+ listener is removed:</p>
233
+ <pre><code class="js"><span class="hl-6">import</span><span class="hl-1"> { </span><span class="hl-5">EventEmitter</span><span class="hl-1"> } </span><span class="hl-6">from</span><span class="hl-1"> </span><span class="hl-2">&#39;node:events&#39;</span><span class="hl-1">;</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-7">ee</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-0">EventEmitter</span><span class="hl-1">();</span><br/><br/><span class="hl-4">function</span><span class="hl-1"> </span><span class="hl-0">pong</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><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-2">&#39;pong&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-5">ee</span><span class="hl-1">.</span><span class="hl-0">on</span><span class="hl-1">(</span><span class="hl-2">&#39;ping&#39;</span><span class="hl-1">, </span><span class="hl-5">pong</span><span class="hl-1">);</span><br/><span class="hl-5">ee</span><span class="hl-1">.</span><span class="hl-0">once</span><span class="hl-1">(</span><span class="hl-2">&#39;ping&#39;</span><span class="hl-1">, </span><span class="hl-5">pong</span><span class="hl-1">);</span><br/><span class="hl-5">ee</span><span class="hl-1">.</span><span class="hl-0">removeListener</span><span class="hl-1">(</span><span class="hl-2">&#39;ping&#39;</span><span class="hl-1">, </span><span class="hl-5">pong</span><span class="hl-1">);</span><br/><br/><span class="hl-5">ee</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;ping&#39;</span><span class="hl-1">);</span><br/><span class="hl-5">ee</span><span class="hl-1">.</span><span class="hl-0">emit</span><span class="hl-1">(</span><span class="hl-2">&#39;ping&#39;</span><span class="hl-1">);</span>
234
+ </code><button type="button">Copy</button></pre>
235
+
236
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
237
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="removelistenere"><span class="tsd-kind-type-parameter">E</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">eventName</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span></span></li><li><span><span class="tsd-kind-parameter">listener</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-14">Since<a href="#since-14" 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><p>v0.1.26</p>
238
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.removeListener</p><ul><li>Defined in node_modules/@types/node/events.d.ts:425</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="setmaxlisteners"><span>set<wbr/>Max<wbr/>Listeners</span><a href="#setmaxlisteners" 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><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="setmaxlisteners-1"><span class="tsd-kind-call-signature">setMaxListeners</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">n</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">this</span><a href="#setmaxlisteners-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>By default <code>EventEmitter</code>s will print a warning if more than <code>10</code> listeners are
239
+ added for a particular event. This is a useful default that helps finding
240
+ memory leaks. The <code>emitter.setMaxListeners()</code> method allows the limit to be
241
+ modified for this specific <code>EventEmitter</code> instance. The value can be set to
242
+ <code>Infinity</code> (or <code>0</code>) to indicate an unlimited number of listeners.</p>
243
+ <p>Returns a reference to the <code>EventEmitter</code>, so that calls can be chained.</p>
244
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">n</span>: <span class="tsd-signature-type">number</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-since"><h4 class="tsd-anchor-link" id="since-15">Since<a href="#since-15" 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><p>v0.3.5</p>
245
+ </div></div><aside class="tsd-sources"><p>Inherited from EventEmitter.setMaxListeners</p><ul><li>Defined in node_modules/@types/node/events.d.ts:436</li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="startinteractivesession"><span>start<wbr/>Interactive<wbr/>Session</span><a href="#startinteractivesession" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="startinteractivesession-1"><span class="tsd-kind-call-signature">startInteractiveSession</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">stream</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/ShellStream.html" class="tsd-signature-type tsd-kind-interface">ShellStream</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">authUser</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">sessionId</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">remoteAddress</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">terminalSize</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">cols</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">rows</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#startinteractivesession-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Attaches an interactive PTY session to this shell instance.</p>
246
+ <p>Called internally by <code>SshMimic</code> when a client opens a shell channel.
247
+ The session reads from <code>stream</code> (user keystrokes) and writes back ANSI
248
+ output. History, <code>.bashrc</code> sourcing, and Ctrl+W/Ctrl+U line editing are
249
+ handled automatically.</p>
250
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">stream</span>: <a href="../interfaces/ShellStream.html" class="tsd-signature-type tsd-kind-interface">ShellStream</a></span><div class="tsd-comment tsd-typography"><p>Bidirectional SSH channel stream.</p>
251
+ </div></li><li><span><span class="tsd-kind-parameter">authUser</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Authenticated username bound to this session.</p>
252
+ </div></li><li><span><span class="tsd-kind-parameter">sessionId</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></span><div class="tsd-comment tsd-typography"><p>Stable session UUID (used for <code>who</code> output), or <code>null</code>.</p>
253
+ </div></li><li><span><span class="tsd-kind-parameter">remoteAddress</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>IP or hostname of the connecting client.</p>
254
+ </div></li><li><span><span class="tsd-kind-parameter">terminalSize</span>: <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">cols</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">rows</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">}</span></span><div class="tsd-comment tsd-typography"><p>Initial terminal dimensions in columns and rows.</p>
255
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L257">src/VirtualShell/index.ts:257</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="syncpasswd"><span>sync<wbr/>Passwd</span><a href="#syncpasswd" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="syncpasswd-1"><span class="tsd-kind-call-signature">syncPasswd</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#syncpasswd-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Syncs <code>/etc/passwd</code>, <code>/etc/group</code>, and <code>/etc/shadow</code> from the current
256
+ <code>VirtualUserManager</code> state.</p>
257
+ <p>Called automatically during <code>bootstrapLinuxRootfs</code>. Call again after
258
+ <code>users.addUser()</code>, <code>users.deleteUser()</code>, or <code>users.addSudoer()</code> to keep
259
+ the classic Unix credential files in sync with the user manager.</p>
260
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L360">src/VirtualShell/index.ts:360</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="unmount"><span>unmount</span><a href="#unmount" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="unmount-1"><span class="tsd-kind-call-signature">unmount</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">vPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#unmount-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Remove a previously mounted host directory.</p>
261
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">vPath</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L328">src/VirtualShell/index.ts:328</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="writefileasuser"><span>write<wbr/>File<wbr/>As<wbr/>User</span><a href="#writefileasuser" 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><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="writefileasuser-1"><span class="tsd-kind-call-signature">writeFileAsUser</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">authUser</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">targetPath</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">content</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Buffer</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ArrayBufferLike</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#writefileasuser-1" 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></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Writes a file on behalf of a user with quota enforcement.</p>
262
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">authUser</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>User performing the write.</p>
263
+ </div></li><li><span><span class="tsd-kind-parameter">targetPath</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>Destination path.</p>
264
+ </div></li><li><span><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Buffer</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ArrayBufferLike</span><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>File content.</p>
265
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/itsrealfortune/typescript-virtual-container/blob/209b91736bb975ff0bab066428ddd94c5b28a080/src/VirtualShell/index.ts#L398">src/VirtualShell/index.ts:398</a></li></ul></aside></div></li></ul></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-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></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="#hostname"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>hostname</span></a><a href="#packagemanager"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>package<wbr/>Manager</span></a><a href="#properties"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>properties</span></a><a href="#starttime"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>start<wbr/>Time</span></a><a href="#users"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>users</span></a><a href="#vfs"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>vfs</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#capturerejectionsymbol" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>[capture<wbr/>Rejection<wbr/>Symbol]</span></a><a href="#addcommand"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Command</span></a><a href="#addlistener" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Listener</span></a><a href="#emit" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>emit</span></a><a href="#ensureinitialized"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>ensure<wbr/>Initialized</span></a><a href="#eventnames" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>event<wbr/>Names</span></a><a href="#executecommand"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>execute<wbr/>Command</span></a><a href="#gethostname"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Hostname</span></a><a href="#getmaxlisteners" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Max<wbr/>Listeners</span></a><a href="#getmounts"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Mounts</span></a><a href="#getusers"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Users</span></a><a href="#getvfs"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Vfs</span></a><a href="#listenercount" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>listener<wbr/>Count</span></a><a href="#listeners" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>listeners</span></a><a href="#mount"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>mount</span></a><a href="#off" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>off</span></a><a href="#on" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>on</span></a><a href="#once" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>once</span></a><a href="#prependlistener" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>prepend<wbr/>Listener</span></a><a href="#prependoncelistener" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>prepend<wbr/>Once<wbr/>Listener</span></a><a href="#rawlisteners" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>raw<wbr/>Listeners</span></a><a href="#refreshprocfs"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>refresh<wbr/>Proc<wbr/>Fs</span></a><a href="#refreshprocsessions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>refresh<wbr/>Proc<wbr/>Sessions</span></a><a href="#removealllisteners" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>remove<wbr/>All<wbr/>Listeners</span></a><a href="#removelistener" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>remove<wbr/>Listener</span></a><a href="#setmaxlisteners" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>set<wbr/>Max<wbr/>Listeners</span></a><a href="#startinteractivesession"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>start<wbr/>Interactive<wbr/>Session</span></a><a href="#syncpasswd"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>sync<wbr/>Passwd</span></a><a href="#unmount"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>unmount</span></a><a href="#writefileasuser"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>write<wbr/>File<wbr/>As<wbr/>User</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">typescript-virtual-container</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>