@seanhogg/builderforce-webcontainers-core 2026.10.1 → 2026.10.3

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 (431) hide show
  1. package/dist/build.d.ts +42 -0
  2. package/dist/build.d.ts.map +1 -0
  3. package/dist/build.js +65 -0
  4. package/dist/build.js.map +1 -0
  5. package/dist/buildHost.d.ts +31 -0
  6. package/dist/buildHost.d.ts.map +1 -0
  7. package/dist/buildHost.js +125 -0
  8. package/dist/buildHost.js.map +1 -0
  9. package/dist/buildHtml.d.ts +28 -0
  10. package/dist/buildHtml.d.ts.map +1 -0
  11. package/dist/buildHtml.js +74 -0
  12. package/dist/buildHtml.js.map +1 -0
  13. package/dist/bundler.d.ts +129 -0
  14. package/dist/bundler.d.ts.map +1 -0
  15. package/dist/bundler.js +79 -0
  16. package/dist/bundler.js.map +1 -0
  17. package/dist/check/acquire.d.ts +46 -0
  18. package/dist/check/acquire.d.ts.map +1 -0
  19. package/dist/check/acquire.js +179 -0
  20. package/dist/check/acquire.js.map +1 -0
  21. package/dist/check/compilerHost.d.ts +22 -0
  22. package/dist/check/compilerHost.d.ts.map +1 -0
  23. package/dist/check/compilerHost.js +128 -0
  24. package/dist/check/compilerHost.js.map +1 -0
  25. package/dist/check/diagnostics.d.ts +23 -0
  26. package/dist/check/diagnostics.d.ts.map +1 -0
  27. package/dist/check/diagnostics.js +28 -0
  28. package/dist/check/diagnostics.js.map +1 -0
  29. package/dist/check/index.d.ts +19 -0
  30. package/dist/check/index.d.ts.map +1 -0
  31. package/dist/check/index.js +13 -0
  32. package/dist/check/index.js.map +1 -0
  33. package/dist/check/projects.d.ts +26 -0
  34. package/dist/check/projects.d.ts.map +1 -0
  35. package/dist/check/projects.js +124 -0
  36. package/dist/check/projects.js.map +1 -0
  37. package/dist/check/shims.d.ts +29 -0
  38. package/dist/check/shims.d.ts.map +1 -0
  39. package/dist/check/shims.js +76 -0
  40. package/dist/check/shims.js.map +1 -0
  41. package/dist/check/typeStore.d.ts +57 -0
  42. package/dist/check/typeStore.d.ts.map +1 -0
  43. package/dist/check/typeStore.js +89 -0
  44. package/dist/check/typeStore.js.map +1 -0
  45. package/dist/check/typecheck.d.ts +29 -0
  46. package/dist/check/typecheck.d.ts.map +1 -0
  47. package/dist/check/typecheck.js +91 -0
  48. package/dist/check/typecheck.js.map +1 -0
  49. package/dist/compileComponent.d.ts +8 -0
  50. package/dist/compileComponent.d.ts.map +1 -0
  51. package/dist/compileComponent.js +22 -0
  52. package/dist/compileComponent.js.map +1 -0
  53. package/dist/compileScript.d.ts +19 -4
  54. package/dist/compileScript.d.ts.map +1 -1
  55. package/dist/compileScript.js +37 -12
  56. package/dist/compileScript.js.map +1 -1
  57. package/dist/components.d.ts +41 -0
  58. package/dist/components.d.ts.map +1 -0
  59. package/dist/components.js +14 -0
  60. package/dist/components.js.map +1 -0
  61. package/dist/detectProject.d.ts +3 -0
  62. package/dist/detectProject.d.ts.map +1 -1
  63. package/dist/detectProject.js +16 -6
  64. package/dist/detectProject.js.map +1 -1
  65. package/dist/devServer.d.ts +5 -2
  66. package/dist/devServer.d.ts.map +1 -1
  67. package/dist/devServer.js +16 -8
  68. package/dist/devServer.js.map +1 -1
  69. package/dist/hash.d.ts +2 -0
  70. package/dist/hash.d.ts.map +1 -0
  71. package/dist/hash.js +22 -0
  72. package/dist/hash.js.map +1 -0
  73. package/dist/html.d.ts +8 -0
  74. package/dist/html.d.ts.map +1 -1
  75. package/dist/html.js +17 -1
  76. package/dist/html.js.map +1 -1
  77. package/dist/index.d.ts +25 -7
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +15 -4
  80. package/dist/index.js.map +1 -1
  81. package/dist/installer/bins.d.ts +24 -0
  82. package/dist/installer/bins.d.ts.map +1 -0
  83. package/dist/installer/bins.js +56 -0
  84. package/dist/installer/bins.js.map +1 -0
  85. package/dist/installer/index.d.ts +14 -0
  86. package/dist/installer/index.d.ts.map +1 -0
  87. package/dist/installer/index.js +9 -0
  88. package/dist/installer/index.js.map +1 -0
  89. package/dist/installer/install.d.ts +46 -0
  90. package/dist/installer/install.d.ts.map +1 -0
  91. package/dist/installer/install.js +245 -0
  92. package/dist/installer/install.js.map +1 -0
  93. package/dist/installer/lockfile.d.ts +49 -0
  94. package/dist/installer/lockfile.d.ts.map +1 -0
  95. package/dist/installer/lockfile.js +110 -0
  96. package/dist/installer/lockfile.js.map +1 -0
  97. package/dist/installer/registry.d.ts +84 -0
  98. package/dist/installer/registry.d.ts.map +1 -0
  99. package/dist/installer/registry.js +130 -0
  100. package/dist/installer/registry.js.map +1 -0
  101. package/dist/installer/semver.d.ts +38 -0
  102. package/dist/installer/semver.d.ts.map +1 -0
  103. package/dist/installer/semver.js +187 -0
  104. package/dist/installer/semver.js.map +1 -0
  105. package/dist/installer/spec.d.ts +30 -0
  106. package/dist/installer/spec.d.ts.map +1 -0
  107. package/dist/installer/spec.js +30 -0
  108. package/dist/installer/spec.js.map +1 -0
  109. package/dist/installer/tar.d.ts +17 -0
  110. package/dist/installer/tar.d.ts.map +1 -0
  111. package/dist/installer/tar.js +150 -0
  112. package/dist/installer/tar.js.map +1 -0
  113. package/dist/installer/tree.d.ts +48 -0
  114. package/dist/installer/tree.d.ts.map +1 -0
  115. package/dist/installer/tree.js +179 -0
  116. package/dist/installer/tree.js.map +1 -0
  117. package/dist/node/assert.d.ts +15 -0
  118. package/dist/node/assert.d.ts.map +1 -0
  119. package/dist/node/assert.js +137 -0
  120. package/dist/node/assert.js.map +1 -0
  121. package/dist/node/buffer.d.ts +84 -0
  122. package/dist/node/buffer.d.ts.map +1 -0
  123. package/dist/node/buffer.js +304 -0
  124. package/dist/node/buffer.js.map +1 -0
  125. package/dist/node/builtins.d.ts +25 -0
  126. package/dist/node/builtins.d.ts.map +1 -0
  127. package/dist/node/builtins.js +101 -0
  128. package/dist/node/builtins.js.map +1 -0
  129. package/dist/node/callable.d.ts +13 -0
  130. package/dist/node/callable.d.ts.map +1 -0
  131. package/dist/node/callable.js +26 -0
  132. package/dist/node/callable.js.map +1 -0
  133. package/dist/node/childProcess.d.ts +13 -0
  134. package/dist/node/childProcess.d.ts.map +1 -0
  135. package/dist/node/childProcess.js +143 -0
  136. package/dist/node/childProcess.js.map +1 -0
  137. package/dist/node/crypto.d.ts +3 -0
  138. package/dist/node/crypto.d.ts.map +1 -0
  139. package/dist/node/crypto.js +180 -0
  140. package/dist/node/crypto.js.map +1 -0
  141. package/dist/node/esm.d.ts +9 -0
  142. package/dist/node/esm.d.ts.map +1 -0
  143. package/dist/node/esm.js +202 -0
  144. package/dist/node/esm.js.map +1 -0
  145. package/dist/node/events.d.ts +40 -0
  146. package/dist/node/events.d.ts.map +1 -0
  147. package/dist/node/events.js +160 -0
  148. package/dist/node/events.js.map +1 -0
  149. package/dist/node/fs/index.d.ts +7 -0
  150. package/dist/node/fs/index.d.ts.map +1 -0
  151. package/dist/node/fs/index.js +270 -0
  152. package/dist/node/fs/index.js.map +1 -0
  153. package/dist/node/fs/stats.d.ts +93 -0
  154. package/dist/node/fs/stats.d.ts.map +1 -0
  155. package/dist/node/fs/stats.js +104 -0
  156. package/dist/node/fs/stats.js.map +1 -0
  157. package/dist/node/fs/sync.d.ts +98 -0
  158. package/dist/node/fs/sync.d.ts.map +1 -0
  159. package/dist/node/fs/sync.js +348 -0
  160. package/dist/node/fs/sync.js.map +1 -0
  161. package/dist/node/hashes.d.ts +15 -0
  162. package/dist/node/hashes.d.ts.map +1 -0
  163. package/dist/node/hashes.js +195 -0
  164. package/dist/node/hashes.js.map +1 -0
  165. package/dist/node/http/client.d.ts +35 -0
  166. package/dist/node/http/client.d.ts.map +1 -0
  167. package/dist/node/http/client.js +161 -0
  168. package/dist/node/http/client.js.map +1 -0
  169. package/dist/node/http/index.d.ts +5 -0
  170. package/dist/node/http/index.d.ts.map +1 -0
  171. package/dist/node/http/index.js +125 -0
  172. package/dist/node/http/index.js.map +1 -0
  173. package/dist/node/http/server.d.ts +135 -0
  174. package/dist/node/http/server.d.ts.map +1 -0
  175. package/dist/node/http/server.js +308 -0
  176. package/dist/node/http/server.js.map +1 -0
  177. package/dist/node/http/status.d.ts +3 -0
  178. package/dist/node/http/status.d.ts.map +1 -0
  179. package/dist/node/http/status.js +13 -0
  180. package/dist/node/http/status.js.map +1 -0
  181. package/dist/node/inspect.d.ts +22 -0
  182. package/dist/node/inspect.d.ts.map +1 -0
  183. package/dist/node/inspect.js +172 -0
  184. package/dist/node/inspect.js.map +1 -0
  185. package/dist/node/loader.d.ts +91 -0
  186. package/dist/node/loader.d.ts.map +1 -0
  187. package/dist/node/loader.js +265 -0
  188. package/dist/node/loader.js.map +1 -0
  189. package/dist/node/loop.d.ts +71 -0
  190. package/dist/node/loop.d.ts.map +1 -0
  191. package/dist/node/loop.js +189 -0
  192. package/dist/node/loop.js.map +1 -0
  193. package/dist/node/misc.d.ts +10 -0
  194. package/dist/node/misc.d.ts.map +1 -0
  195. package/dist/node/misc.js +256 -0
  196. package/dist/node/misc.js.map +1 -0
  197. package/dist/node/path.d.ts +14 -0
  198. package/dist/node/path.d.ts.map +1 -0
  199. package/dist/node/path.js +128 -0
  200. package/dist/node/path.js.map +1 -0
  201. package/dist/node/process.d.ts +31 -0
  202. package/dist/node/process.d.ts.map +1 -0
  203. package/dist/node/process.js +309 -0
  204. package/dist/node/process.js.map +1 -0
  205. package/dist/node/program.d.ts +19 -0
  206. package/dist/node/program.d.ts.map +1 -0
  207. package/dist/node/program.js +165 -0
  208. package/dist/node/program.js.map +1 -0
  209. package/dist/node/readline.d.ts +2 -0
  210. package/dist/node/readline.d.ts.map +1 -0
  211. package/dist/node/readline.js +155 -0
  212. package/dist/node/readline.js.map +1 -0
  213. package/dist/node/resolve.d.ts +45 -0
  214. package/dist/node/resolve.d.ts.map +1 -0
  215. package/dist/node/resolve.js +206 -0
  216. package/dist/node/resolve.js.map +1 -0
  217. package/dist/node/runtime.d.ts +40 -0
  218. package/dist/node/runtime.d.ts.map +1 -0
  219. package/dist/node/runtime.js +149 -0
  220. package/dist/node/runtime.js.map +1 -0
  221. package/dist/node/stream/index.d.ts +52 -0
  222. package/dist/node/stream/index.d.ts.map +1 -0
  223. package/dist/node/stream/index.js +184 -0
  224. package/dist/node/stream/index.js.map +1 -0
  225. package/dist/node/stream/readable.d.ts +83 -0
  226. package/dist/node/stream/readable.d.ts.map +1 -0
  227. package/dist/node/stream/readable.js +325 -0
  228. package/dist/node/stream/readable.js.map +1 -0
  229. package/dist/node/stream/writable.d.ts +80 -0
  230. package/dist/node/stream/writable.d.ts.map +1 -0
  231. package/dist/node/stream/writable.js +224 -0
  232. package/dist/node/stream/writable.js.map +1 -0
  233. package/dist/node/urlqs.d.ts +22 -0
  234. package/dist/node/urlqs.d.ts.map +1 -0
  235. package/dist/node/urlqs.js +165 -0
  236. package/dist/node/urlqs.js.map +1 -0
  237. package/dist/node/util.d.ts +37 -0
  238. package/dist/node/util.d.ts.map +1 -0
  239. package/dist/node/util.js +160 -0
  240. package/dist/node/util.js.map +1 -0
  241. package/dist/node/zlib.d.ts +2 -0
  242. package/dist/node/zlib.d.ts.map +1 -0
  243. package/dist/node/zlib.js +133 -0
  244. package/dist/node/zlib.js.map +1 -0
  245. package/dist/packageCdn.d.ts +12 -0
  246. package/dist/packageCdn.d.ts.map +1 -1
  247. package/dist/packageCdn.js +3 -1
  248. package/dist/packageCdn.js.map +1 -1
  249. package/dist/projectConfig.d.ts +6 -2
  250. package/dist/projectConfig.d.ts.map +1 -1
  251. package/dist/projectConfig.js +32 -8
  252. package/dist/projectConfig.js.map +1 -1
  253. package/dist/shell/builtins.d.ts +23 -0
  254. package/dist/shell/builtins.d.ts.map +1 -0
  255. package/dist/shell/builtins.js +131 -0
  256. package/dist/shell/builtins.js.map +1 -0
  257. package/dist/shell/context.d.ts +41 -0
  258. package/dist/shell/context.d.ts.map +1 -0
  259. package/dist/shell/context.js +65 -0
  260. package/dist/shell/context.js.map +1 -0
  261. package/dist/shell/devHandoff.d.ts +18 -0
  262. package/dist/shell/devHandoff.d.ts.map +1 -0
  263. package/dist/shell/devHandoff.js +36 -0
  264. package/dist/shell/devHandoff.js.map +1 -0
  265. package/dist/shell/exec.d.ts +67 -0
  266. package/dist/shell/exec.d.ts.map +1 -0
  267. package/dist/shell/exec.js +247 -0
  268. package/dist/shell/exec.js.map +1 -0
  269. package/dist/shell/expand.d.ts +28 -0
  270. package/dist/shell/expand.d.ts.map +1 -0
  271. package/dist/shell/expand.js +149 -0
  272. package/dist/shell/expand.js.map +1 -0
  273. package/dist/shell/fileCommands.d.ts +10 -0
  274. package/dist/shell/fileCommands.d.ts.map +1 -0
  275. package/dist/shell/fileCommands.js +208 -0
  276. package/dist/shell/fileCommands.js.map +1 -0
  277. package/dist/shell/lineEditor.d.ts +43 -0
  278. package/dist/shell/lineEditor.d.ts.map +1 -0
  279. package/dist/shell/lineEditor.js +234 -0
  280. package/dist/shell/lineEditor.js.map +1 -0
  281. package/dist/shell/npm.d.ts +6 -0
  282. package/dist/shell/npm.d.ts.map +1 -0
  283. package/dist/shell/npm.js +234 -0
  284. package/dist/shell/npm.js.map +1 -0
  285. package/dist/shell/parse.d.ts +73 -0
  286. package/dist/shell/parse.d.ts.map +1 -0
  287. package/dist/shell/parse.js +300 -0
  288. package/dist/shell/parse.js.map +1 -0
  289. package/dist/shell/program.d.ts +12 -0
  290. package/dist/shell/program.d.ts.map +1 -0
  291. package/dist/shell/program.js +219 -0
  292. package/dist/shell/program.js.map +1 -0
  293. package/dist/shell/textCommands.d.ts +15 -0
  294. package/dist/shell/textCommands.d.ts.map +1 -0
  295. package/dist/shell/textCommands.js +185 -0
  296. package/dist/shell/textCommands.js.map +1 -0
  297. package/dist/styleModules.d.ts +6 -0
  298. package/dist/styleModules.d.ts.map +1 -1
  299. package/dist/styleModules.js +14 -4
  300. package/dist/styleModules.js.map +1 -1
  301. package/dist/svelteCompiler.d.ts +28 -0
  302. package/dist/svelteCompiler.d.ts.map +1 -0
  303. package/dist/svelteCompiler.js +13 -0
  304. package/dist/svelteCompiler.js.map +1 -0
  305. package/dist/system/commands.d.ts +26 -0
  306. package/dist/system/commands.d.ts.map +1 -0
  307. package/dist/system/commands.js +53 -0
  308. package/dist/system/commands.js.map +1 -0
  309. package/dist/system/index.d.ts +23 -0
  310. package/dist/system/index.d.ts.map +1 -0
  311. package/dist/system/index.js +16 -0
  312. package/dist/system/index.js.map +1 -0
  313. package/dist/system/kernel.d.ts +54 -0
  314. package/dist/system/kernel.d.ts.map +1 -0
  315. package/dist/system/kernel.js +81 -0
  316. package/dist/system/kernel.js.map +1 -0
  317. package/dist/system/ports.d.ts +32 -0
  318. package/dist/system/ports.d.ts.map +1 -0
  319. package/dist/system/ports.js +57 -0
  320. package/dist/system/ports.js.map +1 -0
  321. package/dist/system/process.d.ts +32 -0
  322. package/dist/system/process.d.ts.map +1 -0
  323. package/dist/system/process.js +130 -0
  324. package/dist/system/process.js.map +1 -0
  325. package/dist/system/programs.d.ts +10 -0
  326. package/dist/system/programs.d.ts.map +1 -0
  327. package/dist/system/programs.js +22 -0
  328. package/dist/system/programs.js.map +1 -0
  329. package/dist/system/terminal.d.ts +45 -0
  330. package/dist/system/terminal.d.ts.map +1 -0
  331. package/dist/system/terminal.js +127 -0
  332. package/dist/system/terminal.js.map +1 -0
  333. package/dist/system/types.d.ts +100 -0
  334. package/dist/system/types.d.ts.map +1 -0
  335. package/dist/system/types.js +2 -0
  336. package/dist/system/types.js.map +1 -0
  337. package/dist/vfs.d.ts +28 -4
  338. package/dist/vfs.d.ts.map +1 -1
  339. package/dist/vfs.js +95 -32
  340. package/dist/vfs.js.map +1 -1
  341. package/dist/vueCompiler.d.ts +75 -0
  342. package/dist/vueCompiler.d.ts.map +1 -0
  343. package/dist/vueCompiler.js +67 -0
  344. package/dist/vueCompiler.js.map +1 -0
  345. package/package.json +18 -2
  346. package/src/build.ts +105 -0
  347. package/src/buildHost.ts +154 -0
  348. package/src/buildHtml.ts +101 -0
  349. package/src/bundler.ts +190 -0
  350. package/src/check/acquire.ts +212 -0
  351. package/src/check/compilerHost.ts +138 -0
  352. package/src/check/diagnostics.ts +48 -0
  353. package/src/check/index.ts +28 -0
  354. package/src/check/projects.ts +149 -0
  355. package/src/check/shims.ts +88 -0
  356. package/src/check/typeStore.ts +103 -0
  357. package/src/check/typecheck.ts +134 -0
  358. package/src/compileComponent.ts +21 -0
  359. package/src/compileScript.ts +42 -13
  360. package/src/components.ts +59 -0
  361. package/src/detectProject.ts +18 -6
  362. package/src/devServer.ts +19 -10
  363. package/src/hash.ts +22 -0
  364. package/src/html.ts +19 -1
  365. package/src/index.ts +36 -7
  366. package/src/installer/bins.ts +64 -0
  367. package/src/installer/index.ts +13 -0
  368. package/src/installer/install.ts +275 -0
  369. package/src/installer/lockfile.ts +146 -0
  370. package/src/installer/registry.ts +175 -0
  371. package/src/installer/semver.ts +190 -0
  372. package/src/installer/spec.ts +53 -0
  373. package/src/installer/tar.ts +155 -0
  374. package/src/installer/tree.ts +236 -0
  375. package/src/node/assert.ts +127 -0
  376. package/src/node/buffer.ts +304 -0
  377. package/src/node/builtins.ts +123 -0
  378. package/src/node/callable.ts +25 -0
  379. package/src/node/childProcess.ts +164 -0
  380. package/src/node/crypto.ts +187 -0
  381. package/src/node/esm.ts +196 -0
  382. package/src/node/events.ts +176 -0
  383. package/src/node/fs/index.ts +277 -0
  384. package/src/node/fs/stats.ts +110 -0
  385. package/src/node/fs/sync.ts +335 -0
  386. package/src/node/hashes.ts +171 -0
  387. package/src/node/http/client.ts +173 -0
  388. package/src/node/http/index.ts +122 -0
  389. package/src/node/http/server.ts +308 -0
  390. package/src/node/http/status.ts +13 -0
  391. package/src/node/inspect.ts +166 -0
  392. package/src/node/loader.ts +293 -0
  393. package/src/node/loop.ts +193 -0
  394. package/src/node/misc.ts +250 -0
  395. package/src/node/path.ts +135 -0
  396. package/src/node/process.ts +324 -0
  397. package/src/node/program.ts +170 -0
  398. package/src/node/readline.ts +157 -0
  399. package/src/node/resolve.ts +216 -0
  400. package/src/node/runtime.ts +184 -0
  401. package/src/node/stream/index.ts +196 -0
  402. package/src/node/stream/readable.ts +345 -0
  403. package/src/node/stream/writable.ts +244 -0
  404. package/src/node/urlqs.ts +162 -0
  405. package/src/node/util.ts +145 -0
  406. package/src/node/zlib.ts +145 -0
  407. package/src/packageCdn.ts +11 -1
  408. package/src/projectConfig.ts +34 -7
  409. package/src/shell/builtins.ts +141 -0
  410. package/src/shell/context.ts +89 -0
  411. package/src/shell/devHandoff.ts +49 -0
  412. package/src/shell/exec.ts +268 -0
  413. package/src/shell/expand.ts +145 -0
  414. package/src/shell/fileCommands.ts +206 -0
  415. package/src/shell/lineEditor.ts +233 -0
  416. package/src/shell/npm.ts +229 -0
  417. package/src/shell/parse.ts +295 -0
  418. package/src/shell/program.ts +223 -0
  419. package/src/shell/textCommands.ts +177 -0
  420. package/src/styleModules.ts +15 -4
  421. package/src/svelteCompiler.ts +31 -0
  422. package/src/system/commands.ts +72 -0
  423. package/src/system/index.ts +22 -0
  424. package/src/system/kernel.ts +106 -0
  425. package/src/system/ports.ts +73 -0
  426. package/src/system/process.ts +158 -0
  427. package/src/system/programs.ts +31 -0
  428. package/src/system/terminal.ts +135 -0
  429. package/src/system/types.ts +103 -0
  430. package/src/vfs.ts +92 -28
  431. package/src/vueCompiler.ts +121 -0
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Node's EventEmitter. Most of the Node API surface (streams, servers, child
3
+ * processes, `process` itself) is built on it, so it is written faithfully:
4
+ * listener order, `once` wrappers that `removeListener` can find, the throw on
5
+ * an unhandled `'error'`, and `newListener`/`removeListener` events.
6
+ */
7
+ import { callable } from './callable.js';
8
+ /** The class itself, for subclassing inside the runtime; user code gets {@link EventEmitter}. */
9
+ export class EventEmitterBase {
10
+ static defaultMaxListeners = 10;
11
+ static errorMonitor = Symbol('events.errorMonitor');
12
+ constructor() {
13
+ initEmitter(this);
14
+ }
15
+ /** Resolve with the arguments of the next `event` (rejects on `'error'`). */
16
+ static once(emitter, event) {
17
+ return new Promise((resolve, reject) => {
18
+ const onError = (error) => {
19
+ emitter.removeListener(event, onEvent);
20
+ reject(error);
21
+ };
22
+ const onEvent = (...args) => {
23
+ if (event !== 'error')
24
+ emitter.removeListener('error', onError);
25
+ resolve(args);
26
+ };
27
+ emitter.once(event, onEvent);
28
+ if (event !== 'error')
29
+ emitter.once('error', onError);
30
+ });
31
+ }
32
+ static listenerCount(emitter, event) {
33
+ return emitter.listenerCount(event);
34
+ }
35
+ addListener(event, listener) {
36
+ return this._add(event, listener, false);
37
+ }
38
+ on(event, listener) {
39
+ return this._add(event, listener, false);
40
+ }
41
+ prependListener(event, listener) {
42
+ return this._add(event, listener, true);
43
+ }
44
+ once(event, listener) {
45
+ return this._add(event, this._onceWrap(event, listener), false);
46
+ }
47
+ prependOnceListener(event, listener) {
48
+ return this._add(event, this._onceWrap(event, listener), true);
49
+ }
50
+ removeListener(event, listener) {
51
+ const list = this._events?.get(event);
52
+ if (!list)
53
+ return this;
54
+ for (let i = list.length - 1; i >= 0; i--) {
55
+ const entry = list[i];
56
+ if (entry === listener || entry.listener === listener) {
57
+ list.splice(i, 1);
58
+ if (!list.length)
59
+ this._events.delete(event);
60
+ if (this._events.has('removeListener'))
61
+ this.emit('removeListener', event, listener);
62
+ break;
63
+ }
64
+ }
65
+ return this;
66
+ }
67
+ off(event, listener) {
68
+ return this.removeListener(event, listener);
69
+ }
70
+ removeAllListeners(event) {
71
+ if (!this._events)
72
+ return this;
73
+ if (event === undefined)
74
+ this._events.clear();
75
+ else
76
+ this._events.delete(event);
77
+ return this;
78
+ }
79
+ emit(event, ...args) {
80
+ const list = this._events?.get(event);
81
+ if (event === 'error') {
82
+ this._events?.get(EventEmitterBase.errorMonitor)?.slice().forEach((l) => l.apply(this, args));
83
+ if (!list?.length) {
84
+ const error = args[0];
85
+ if (error instanceof Error)
86
+ throw error;
87
+ const wrapped = new Error(`Unhandled error. (${String(error)})`);
88
+ wrapped.context = error;
89
+ throw wrapped;
90
+ }
91
+ }
92
+ if (!list?.length)
93
+ return false;
94
+ for (const listener of list.slice())
95
+ listener.apply(this, args);
96
+ return true;
97
+ }
98
+ listeners(event) {
99
+ return (this._events?.get(event) ?? []).map((l) => l.listener ?? l);
100
+ }
101
+ rawListeners(event) {
102
+ return [...(this._events?.get(event) ?? [])];
103
+ }
104
+ listenerCount(event) {
105
+ return this._events?.get(event)?.length ?? 0;
106
+ }
107
+ eventNames() {
108
+ return [...(this._events?.keys() ?? [])];
109
+ }
110
+ setMaxListeners(n) {
111
+ this._maxListeners = n;
112
+ return this;
113
+ }
114
+ getMaxListeners() {
115
+ return this._maxListeners ?? EventEmitterBase.defaultMaxListeners;
116
+ }
117
+ _add(event, listener, prepend) {
118
+ if (typeof listener !== 'function')
119
+ throw new TypeError('The "listener" argument must be of type function');
120
+ // Subclasses created with util.inherits + EventEmitter.call(this) arrive here
121
+ // without the constructor's field initialisers having run on them.
122
+ if (!this._events)
123
+ this._events = new Map();
124
+ if (this._events.has('newListener'))
125
+ this.emit('newListener', event, listener.listener ?? listener);
126
+ const list = this._events.get(event) ?? [];
127
+ if (prepend)
128
+ list.unshift(listener);
129
+ else
130
+ list.push(listener);
131
+ this._events.set(event, list);
132
+ return this;
133
+ }
134
+ _onceWrap(event, listener) {
135
+ let fired = false;
136
+ const wrapper = ((...args) => {
137
+ if (fired)
138
+ return undefined;
139
+ fired = true;
140
+ this.removeListener(event, wrapper);
141
+ return listener.apply(this, args);
142
+ });
143
+ wrapper.listener = listener;
144
+ return wrapper;
145
+ }
146
+ }
147
+ function initEmitter(self) {
148
+ if (!self._events || !(self._events instanceof Map))
149
+ self._events = new Map();
150
+ }
151
+ export const EventEmitter = callable(EventEmitterBase, initEmitter);
152
+ /** The `events` module object: the class, with Node's statics hung on it. */
153
+ export function createEventsModule() {
154
+ const mod = EventEmitter;
155
+ mod.EventEmitter = EventEmitter;
156
+ mod.once = EventEmitterBase.once;
157
+ mod.defaultMaxListeners = EventEmitterBase.defaultMaxListeners;
158
+ return mod;
159
+ }
160
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/node/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type FsContext } from './sync.js';
2
+ export interface FsModuleContext extends FsContext {
3
+ /** Keep the process alive (a watcher is open); call the result to let go. */
4
+ hold(): () => void;
5
+ }
6
+ export declare function createFsModule(ctx: FsModuleContext): Record<string, any>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/fs/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgB,KAAK,SAAS,EAAe,MAAM,WAAW,CAAC;AAItE,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,6EAA6E;IAC7E,IAAI,IAAI,MAAM,IAAI,CAAC;CACpB;AAUD,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkNxE"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * The `fs` module: the sync API (sync.ts) plus callback, promise and stream
3
+ * forms derived from it, and `watch` over the VFS's change events.
4
+ *
5
+ * Async forms complete on a microtask. That is enough to keep ordering
6
+ * Node-like (callbacks never run synchronously) and, because microtasks always
7
+ * drain before the runtime's exit check, a chain of fs callbacks can never be
8
+ * cut short by the process exiting.
9
+ */
10
+ import { EventEmitterBase } from '../events.js';
11
+ import { Buffer } from '../buffer.js';
12
+ import { Readable } from '../stream/readable.js';
13
+ import { Writable } from '../stream/writable.js';
14
+ import { createSyncFs } from './sync.js';
15
+ import { Dirent, Stats, constants } from './stats.js';
16
+ import { normalizePath } from '../../paths.js';
17
+ const CHUNK = 64 * 1024;
18
+ function lastCallback(args) {
19
+ return typeof args[args.length - 1] === 'function' ? args.pop() : undefined;
20
+ }
21
+ export function createFsModule(ctx) {
22
+ const sync = createSyncFs(ctx);
23
+ const toCallback = (fn, shape = (r) => [r]) => (...args) => {
24
+ const cb = lastCallback(args);
25
+ queueMicrotask(() => {
26
+ let result;
27
+ try {
28
+ result = fn(...args);
29
+ }
30
+ catch (error) {
31
+ cb?.(error);
32
+ return;
33
+ }
34
+ cb?.(null, ...shape(result, args));
35
+ });
36
+ };
37
+ const toPromise = (fn) => async (...args) => fn(...args);
38
+ class ReadStream extends Readable {
39
+ bytesRead = 0;
40
+ path;
41
+ fd = null;
42
+ pending = true;
43
+ data;
44
+ offset;
45
+ endAt;
46
+ constructor(path, options = {}) {
47
+ const opts = typeof options === 'string' ? { encoding: options } : options;
48
+ super({ highWaterMark: opts.highWaterMark ?? CHUNK, encoding: opts.encoding });
49
+ this.path = typeof options === 'object' && opts.fd !== undefined ? '' : sync._resolve(path);
50
+ this.offset = opts.start ?? 0;
51
+ this.endAt = opts.end ?? Infinity;
52
+ queueMicrotask(() => {
53
+ try {
54
+ const contents = sync.readFileSync(this.path);
55
+ this.data = contents;
56
+ this.fd = -1;
57
+ this.pending = false;
58
+ this.emit('open', this.fd);
59
+ this.emit('ready');
60
+ this._pull();
61
+ }
62
+ catch (error) {
63
+ this.destroy(error);
64
+ }
65
+ });
66
+ }
67
+ _read() {
68
+ if (!this.data) {
69
+ this._readableState.reading = false; // retried once the file is loaded
70
+ return;
71
+ }
72
+ const end = Math.min(this.data.length, this.endAt + 1);
73
+ if (this.offset >= end) {
74
+ this.push(null);
75
+ return;
76
+ }
77
+ const chunk = this.data.subarray(this.offset, Math.min(end, this.offset + this._readableState.highWaterMark));
78
+ this.offset += chunk.length;
79
+ this.bytesRead += chunk.length;
80
+ this.push(Buffer.from(chunk));
81
+ }
82
+ close(callback) {
83
+ this.destroy();
84
+ if (callback)
85
+ this.once('close', callback);
86
+ }
87
+ }
88
+ class WriteStream extends Writable {
89
+ options;
90
+ bytesWritten = 0;
91
+ path;
92
+ pending = false;
93
+ started = false;
94
+ constructor(path, options = {}) {
95
+ super({ decodeStrings: true });
96
+ this.options = options;
97
+ this.path = sync._resolve(path);
98
+ queueMicrotask(() => {
99
+ try {
100
+ this.open();
101
+ this.emit('open', -1);
102
+ this.emit('ready');
103
+ }
104
+ catch (error) {
105
+ this.destroy(error);
106
+ }
107
+ });
108
+ }
109
+ open() {
110
+ if (this.started)
111
+ return;
112
+ this.started = true;
113
+ const flags = typeof this.options === 'object' ? this.options.flags ?? 'w' : 'w';
114
+ if (!flags.startsWith('a') || !ctx.vfs.isFile(this.path))
115
+ sync.writeFileSync(this.path, '', { flag: flags.includes('x') ? 'wx' : 'w' });
116
+ }
117
+ _write(chunk, _encoding, callback) {
118
+ try {
119
+ this.open();
120
+ sync.appendFileSync(this.path, chunk);
121
+ this.bytesWritten += chunk.length;
122
+ callback();
123
+ }
124
+ catch (error) {
125
+ callback(error);
126
+ }
127
+ }
128
+ close(callback) {
129
+ this.end();
130
+ if (callback)
131
+ this.once('close', callback);
132
+ }
133
+ }
134
+ class FSWatcher extends EventEmitterBase {
135
+ release;
136
+ unwatch;
137
+ constructor(path, recursive, listener) {
138
+ super();
139
+ const root = normalizePath(path);
140
+ if (listener)
141
+ this.on('change', listener);
142
+ this.release = ctx.hold();
143
+ this.unwatch = ctx.vfs.watch((change) => {
144
+ const p = change.path;
145
+ const inside = p === root || p.startsWith(root === '/' ? '/' : root + '/');
146
+ if (!inside)
147
+ return;
148
+ const rel = p === root ? p.slice(p.lastIndexOf('/') + 1) : p.slice(root.length + (root === '/' ? 0 : 1));
149
+ if (!recursive && rel.includes('/'))
150
+ return;
151
+ this.emit('change', change.type === 'write' && !change.created ? 'change' : 'rename', rel);
152
+ });
153
+ }
154
+ close() {
155
+ this.unwatch();
156
+ this.release();
157
+ this.emit('close');
158
+ }
159
+ ref() { return this; }
160
+ unref() { return this; }
161
+ }
162
+ const watch = (path, options, listener) => {
163
+ if (typeof options === 'function')
164
+ [listener, options] = [options, undefined];
165
+ const resolved = sync._resolve(path);
166
+ if (!ctx.vfs.exists(resolved))
167
+ throw sync.statSync(resolved); // throws ENOENT
168
+ return new FSWatcher(resolved, typeof options === 'object' && !!options?.recursive, listener);
169
+ };
170
+ const fileWatchers = new Map();
171
+ const watchFile = (path, options, listener) => {
172
+ const fn = (typeof options === 'function' ? options : listener);
173
+ const resolved = sync._resolve(path);
174
+ let entry = fileWatchers.get(resolved);
175
+ if (!entry) {
176
+ const watcher = new FSWatcher(resolved, false);
177
+ const current = { watcher, listeners: [] };
178
+ let previous = sync.statSync(resolved, { throwIfNoEntry: false }) ?? new Stats(resolved, 'file', 0, 0);
179
+ watcher.on('change', () => {
180
+ const next = sync.statSync(resolved, { throwIfNoEntry: false }) ?? new Stats(resolved, 'file', 0, 0);
181
+ for (const l of current.listeners)
182
+ l(next, previous);
183
+ previous = next;
184
+ });
185
+ fileWatchers.set(resolved, (entry = current));
186
+ }
187
+ entry.listeners.push(fn);
188
+ return entry.watcher;
189
+ };
190
+ const unwatchFile = (path, listener) => {
191
+ const resolved = sync._resolve(path);
192
+ const entry = fileWatchers.get(resolved);
193
+ if (!entry)
194
+ return;
195
+ entry.listeners = listener ? entry.listeners.filter((l) => l !== listener) : [];
196
+ if (!entry.listeners.length) {
197
+ entry.watcher.close();
198
+ fileWatchers.delete(resolved);
199
+ }
200
+ };
201
+ const fs = { ...sync, constants, Stats, Dirent, ReadStream, WriteStream, FSWatcher, F_OK: 0, R_OK: 4, W_OK: 2, X_OK: 1 };
202
+ delete fs._resolve;
203
+ for (const name of Object.keys(sync)) {
204
+ if (!name.endsWith('Sync'))
205
+ continue;
206
+ const base = name.slice(0, -4);
207
+ const fn = sync[name];
208
+ if (base === 'exists')
209
+ fs.exists = (p, cb) => queueMicrotask(() => cb(sync.existsSync(p)));
210
+ else if (base === 'read')
211
+ fs.read = toCallback(fn, (n, args) => [n, args[1]]);
212
+ else if (base === 'write')
213
+ fs.write = toCallback(fn, (n, args) => [n, args[1]]);
214
+ else
215
+ fs[base] = toCallback(fn);
216
+ }
217
+ fs.realpath.native = fs.realpath;
218
+ fs.createReadStream = (path, options) => new ReadStream(path, options);
219
+ fs.createWriteStream = (path, options) => new WriteStream(path, options);
220
+ fs.watch = watch;
221
+ fs.watchFile = watchFile;
222
+ fs.unwatchFile = unwatchFile;
223
+ const promises = { constants };
224
+ for (const name of Object.keys(sync)) {
225
+ if (!name.endsWith('Sync') || name === 'existsSync')
226
+ continue;
227
+ promises[name.slice(0, -4)] = toPromise(sync[name]);
228
+ }
229
+ promises.open = async (path, flags) => fileHandle(sync, sync.openSync(path, flags), sync._resolve(path));
230
+ promises.watch = (path, options) => watchIterator(watch(path, options), options?.signal);
231
+ fs.promises = promises;
232
+ return fs;
233
+ }
234
+ function fileHandle(sync, fd, path) {
235
+ return {
236
+ fd,
237
+ readFile: async (options) => sync.readFileSync(fd, options),
238
+ writeFile: async (data) => void sync.writeFileSync(path, data),
239
+ appendFile: async (data) => void sync.appendFileSync(path, data),
240
+ read: async (buffer, offset, length, position) => ({ bytesRead: sync.readSync(fd, buffer, offset, length, position), buffer }),
241
+ write: async (data, ...rest) => ({ bytesWritten: sync.writeSync(fd, data, ...rest), buffer: data }),
242
+ stat: async () => sync.fstatSync(fd),
243
+ truncate: async (length) => sync.ftruncateSync(fd, length),
244
+ sync: async () => undefined,
245
+ datasync: async () => undefined,
246
+ chmod: async () => undefined,
247
+ close: async () => sync.closeSync(fd),
248
+ };
249
+ }
250
+ async function* watchIterator(watcher, signal) {
251
+ const queue = [];
252
+ let wake;
253
+ watcher.on('change', (eventType, filename) => {
254
+ queue.push({ eventType, filename });
255
+ wake?.();
256
+ });
257
+ signal?.addEventListener('abort', () => wake?.());
258
+ try {
259
+ while (!signal?.aborted) {
260
+ if (queue.length)
261
+ yield queue.shift();
262
+ else
263
+ await new Promise((resolve) => (wake = resolve));
264
+ }
265
+ }
266
+ finally {
267
+ watcher.close();
268
+ }
269
+ }
270
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/fs/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * The value types of the fs module: Node-shaped errors (`code`, `errno`,
3
+ * `syscall`, `path` — callers branch on `code === 'ENOENT'`), `Stats`,
4
+ * `Dirent` and `fs.constants`.
5
+ */
6
+ declare const ERRNO: Record<string, [number, string]>;
7
+ export interface FsError extends Error {
8
+ code: string;
9
+ errno: number;
10
+ syscall: string;
11
+ path?: string;
12
+ dest?: string;
13
+ }
14
+ export declare function fsError(code: keyof typeof ERRNO | string, syscall: string, path?: string, dest?: string): FsError;
15
+ export declare class Stats {
16
+ dev: number;
17
+ ino: number;
18
+ mode: number;
19
+ nlink: number;
20
+ uid: number;
21
+ gid: number;
22
+ rdev: number;
23
+ size: number;
24
+ blksize: number;
25
+ blocks: number;
26
+ atimeMs: number;
27
+ mtimeMs: number;
28
+ ctimeMs: number;
29
+ birthtimeMs: number;
30
+ atime: Date;
31
+ mtime: Date;
32
+ ctime: Date;
33
+ birthtime: Date;
34
+ constructor(path: string, kind: 'file' | 'directory', size: number, mtimeMs: number);
35
+ isFile(): boolean;
36
+ isDirectory(): boolean;
37
+ isSymbolicLink(): boolean;
38
+ isBlockDevice(): boolean;
39
+ isCharacterDevice(): boolean;
40
+ isFIFO(): boolean;
41
+ isSocket(): boolean;
42
+ }
43
+ export declare class Dirent {
44
+ readonly name: string;
45
+ readonly parentPath: string;
46
+ private readonly kind;
47
+ constructor(name: string, parentPath: string, kind: 'file' | 'directory');
48
+ get path(): string;
49
+ isFile(): boolean;
50
+ isDirectory(): boolean;
51
+ isSymbolicLink(): boolean;
52
+ isBlockDevice(): boolean;
53
+ isCharacterDevice(): boolean;
54
+ isFIFO(): boolean;
55
+ isSocket(): boolean;
56
+ }
57
+ export declare const constants: {
58
+ F_OK: number;
59
+ R_OK: number;
60
+ W_OK: number;
61
+ X_OK: number;
62
+ O_RDONLY: number;
63
+ O_WRONLY: number;
64
+ O_RDWR: number;
65
+ O_CREAT: number;
66
+ O_EXCL: number;
67
+ O_NOCTTY: number;
68
+ O_TRUNC: number;
69
+ O_APPEND: number;
70
+ O_DIRECTORY: number;
71
+ O_NOFOLLOW: number;
72
+ O_SYNC: number;
73
+ O_DSYNC: number;
74
+ O_NONBLOCK: number;
75
+ S_IFMT: number;
76
+ S_IFREG: number;
77
+ S_IFDIR: number;
78
+ S_IFCHR: number;
79
+ S_IFBLK: number;
80
+ S_IFIFO: number;
81
+ S_IFLNK: number;
82
+ S_IFSOCK: number;
83
+ S_IRWXU: number;
84
+ S_IRUSR: number;
85
+ S_IWUSR: number;
86
+ S_IXUSR: number;
87
+ COPYFILE_EXCL: number;
88
+ COPYFILE_FICLONE: number;
89
+ COPYFILE_FICLONE_FORCE: number;
90
+ UV_FS_COPYFILE_EXCL: number;
91
+ };
92
+ export {};
93
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/node/fs/stats.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3C,CAAC;AAEF,MAAM,WAAW,OAAQ,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAUjH;AAWD,qBAAa,KAAK;IAChB,GAAG,SAAQ;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,SAAK;IACV,GAAG,SAAQ;IACX,GAAG,SAAQ;IACX,IAAI,SAAK;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,SAAQ;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;gBAEJ,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAYnF,MAAM,IAAI,OAAO;IACjB,WAAW,IAAI,OAAO;IACtB,cAAc,IAAI,OAAO;IACzB,aAAa,IAAI,OAAO;IACxB,iBAAiB,IAAI,OAAO;IAC5B,MAAM,IAAI,OAAO;IACjB,QAAQ,IAAI,OAAO;CACpB;AAED,qBAAa,MAAM;IACL,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAhE,IAAI,EAAE,MAAM,EAAW,UAAU,EAAE,MAAM,EAAmB,IAAI,EAAE,MAAM,GAAG,WAAW;IAC3G,IAAI,IAAI,IAAI,MAAM,CAA4B;IAC9C,MAAM,IAAI,OAAO;IACjB,WAAW,IAAI,OAAO;IACtB,cAAc,IAAI,OAAO;IACzB,aAAa,IAAI,OAAO;IACxB,iBAAiB,IAAI,OAAO;IAC5B,MAAM,IAAI,OAAO;IACjB,QAAQ,IAAI,OAAO;CACpB;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQrB,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The value types of the fs module: Node-shaped errors (`code`, `errno`,
3
+ * `syscall`, `path` — callers branch on `code === 'ENOENT'`), `Stats`,
4
+ * `Dirent` and `fs.constants`.
5
+ */
6
+ const ERRNO = {
7
+ ENOENT: [-2, 'no such file or directory'],
8
+ EEXIST: [-17, 'file already exists'],
9
+ EISDIR: [-21, 'illegal operation on a directory'],
10
+ ENOTDIR: [-20, 'not a directory'],
11
+ ENOTEMPTY: [-39, 'directory not empty'],
12
+ EBADF: [-9, 'bad file descriptor'],
13
+ EINVAL: [-22, 'invalid argument'],
14
+ EPERM: [-1, 'operation not permitted'],
15
+ EACCES: [-13, 'permission denied'],
16
+ ENOSYS: [-38, 'function not implemented'],
17
+ };
18
+ export function fsError(code, syscall, path, dest) {
19
+ const [errno, text] = ERRNO[code] ?? [-1, code.toLowerCase()];
20
+ const where = path === undefined ? '' : dest === undefined ? ` '${path}'` : ` '${path}' -> '${dest}'`;
21
+ const error = new Error(`${code}: ${text}, ${syscall}${where}`);
22
+ error.code = code;
23
+ error.errno = errno;
24
+ error.syscall = syscall;
25
+ if (path !== undefined)
26
+ error.path = path;
27
+ if (dest !== undefined)
28
+ error.dest = dest;
29
+ return error;
30
+ }
31
+ function inode(path) {
32
+ let hash = 5381;
33
+ for (let i = 0; i < path.length; i++)
34
+ hash = ((hash * 33) ^ path.charCodeAt(i)) >>> 0;
35
+ return hash;
36
+ }
37
+ const S_IFREG = 0o100000;
38
+ const S_IFDIR = 0o040000;
39
+ export class Stats {
40
+ dev = 2049;
41
+ ino;
42
+ mode;
43
+ nlink = 1;
44
+ uid = 1000;
45
+ gid = 1000;
46
+ rdev = 0;
47
+ size;
48
+ blksize = 4096;
49
+ blocks;
50
+ atimeMs;
51
+ mtimeMs;
52
+ ctimeMs;
53
+ birthtimeMs;
54
+ atime;
55
+ mtime;
56
+ ctime;
57
+ birthtime;
58
+ constructor(path, kind, size, mtimeMs) {
59
+ this.ino = inode(path);
60
+ this.mode = kind === 'file' ? S_IFREG | 0o644 : S_IFDIR | 0o755;
61
+ this.size = size;
62
+ this.blocks = Math.ceil(size / 512);
63
+ this.atimeMs = this.mtimeMs = this.ctimeMs = this.birthtimeMs = mtimeMs;
64
+ this.atime = new Date(mtimeMs);
65
+ this.mtime = new Date(mtimeMs);
66
+ this.ctime = new Date(mtimeMs);
67
+ this.birthtime = new Date(mtimeMs);
68
+ }
69
+ isFile() { return (this.mode & 0o170000) === S_IFREG; }
70
+ isDirectory() { return (this.mode & 0o170000) === S_IFDIR; }
71
+ isSymbolicLink() { return false; }
72
+ isBlockDevice() { return false; }
73
+ isCharacterDevice() { return false; }
74
+ isFIFO() { return false; }
75
+ isSocket() { return false; }
76
+ }
77
+ export class Dirent {
78
+ name;
79
+ parentPath;
80
+ kind;
81
+ constructor(name, parentPath, kind) {
82
+ this.name = name;
83
+ this.parentPath = parentPath;
84
+ this.kind = kind;
85
+ }
86
+ get path() { return this.parentPath; }
87
+ isFile() { return this.kind === 'file'; }
88
+ isDirectory() { return this.kind === 'directory'; }
89
+ isSymbolicLink() { return false; }
90
+ isBlockDevice() { return false; }
91
+ isCharacterDevice() { return false; }
92
+ isFIFO() { return false; }
93
+ isSocket() { return false; }
94
+ }
95
+ export const constants = {
96
+ F_OK: 0, R_OK: 4, W_OK: 2, X_OK: 1,
97
+ O_RDONLY: 0, O_WRONLY: 1, O_RDWR: 2, O_CREAT: 64, O_EXCL: 128, O_NOCTTY: 256, O_TRUNC: 512, O_APPEND: 1024,
98
+ O_DIRECTORY: 65536, O_NOFOLLOW: 131072, O_SYNC: 1052672, O_DSYNC: 4096, O_NONBLOCK: 2048,
99
+ S_IFMT: 0o170000, S_IFREG, S_IFDIR, S_IFCHR: 0o020000, S_IFBLK: 0o060000, S_IFIFO: 0o010000, S_IFLNK: 0o120000, S_IFSOCK: 0o140000,
100
+ S_IRWXU: 0o700, S_IRUSR: 0o400, S_IWUSR: 0o200, S_IXUSR: 0o100,
101
+ COPYFILE_EXCL: 1, COPYFILE_FICLONE: 2, COPYFILE_FICLONE_FORCE: 4,
102
+ UV_FS_COPYFILE_EXCL: 1,
103
+ };
104
+ //# sourceMappingURL=stats.js.map