@volter/tabnode 0.2.14-volter.88

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 (429) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +78 -0
  3. package/THIRD-PARTY-NOTICES.md +12 -0
  4. package/dist/__sw__.js +526 -0
  5. package/dist/assets/runtime-worker-4MKaHFVb.js +75221 -0
  6. package/dist/assets/runtime-worker-4MKaHFVb.js.map +1 -0
  7. package/dist/code-transforms.d.ts +21 -0
  8. package/dist/code-transforms.d.ts.map +1 -0
  9. package/dist/config/cdn.d.ts +12 -0
  10. package/dist/config/cdn.d.ts.map +1 -0
  11. package/dist/create-runtime.d.ts +22 -0
  12. package/dist/create-runtime.d.ts.map +1 -0
  13. package/dist/host-globals.d.ts +62 -0
  14. package/dist/host-globals.d.ts.map +1 -0
  15. package/dist/index.cjs +36021 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +127 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.mjs +36020 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/node-internals.d.ts +68 -0
  22. package/dist/node-internals.d.ts.map +1 -0
  23. package/dist/node-lib/binding/blob.d.ts +12 -0
  24. package/dist/node-lib/binding/blob.d.ts.map +1 -0
  25. package/dist/node-lib/binding/buffer.d.ts +144 -0
  26. package/dist/node-lib/binding/buffer.d.ts.map +1 -0
  27. package/dist/node-lib/binding/cares_wrap.d.ts +14 -0
  28. package/dist/node-lib/binding/cares_wrap.d.ts.map +1 -0
  29. package/dist/node-lib/binding/fds.d.ts +30 -0
  30. package/dist/node-lib/binding/fds.d.ts.map +1 -0
  31. package/dist/node-lib/binding/fs.d.ts +157 -0
  32. package/dist/node-lib/binding/fs.d.ts.map +1 -0
  33. package/dist/node-lib/binding/handles.d.ts +81 -0
  34. package/dist/node-lib/binding/handles.d.ts.map +1 -0
  35. package/dist/node-lib/binding/http_parser.d.ts +122 -0
  36. package/dist/node-lib/binding/http_parser.d.ts.map +1 -0
  37. package/dist/node-lib/binding/index.d.ts +3 -0
  38. package/dist/node-lib/binding/index.d.ts.map +1 -0
  39. package/dist/node-lib/binding/llhttp-wasm.d.ts +22 -0
  40. package/dist/node-lib/binding/llhttp-wasm.d.ts.map +1 -0
  41. package/dist/node-lib/binding/misc.d.ts +123 -0
  42. package/dist/node-lib/binding/misc.d.ts.map +1 -0
  43. package/dist/node-lib/binding/pipe_wrap.d.ts +84 -0
  44. package/dist/node-lib/binding/pipe_wrap.d.ts.map +1 -0
  45. package/dist/node-lib/binding/process_wrap.d.ts +173 -0
  46. package/dist/node-lib/binding/process_wrap.d.ts.map +1 -0
  47. package/dist/node-lib/binding/spawn_sync.d.ts +30 -0
  48. package/dist/node-lib/binding/spawn_sync.d.ts.map +1 -0
  49. package/dist/node-lib/binding/stream_wrap.d.ts +191 -0
  50. package/dist/node-lib/binding/stream_wrap.d.ts.map +1 -0
  51. package/dist/node-lib/binding/stubs.d.ts +23 -0
  52. package/dist/node-lib/binding/stubs.d.ts.map +1 -0
  53. package/dist/node-lib/binding/tcp_wrap.d.ts +98 -0
  54. package/dist/node-lib/binding/tcp_wrap.d.ts.map +1 -0
  55. package/dist/node-lib/binding/tty_wrap.d.ts +36 -0
  56. package/dist/node-lib/binding/tty_wrap.d.ts.map +1 -0
  57. package/dist/node-lib/binding/util.d.ts +126 -0
  58. package/dist/node-lib/binding/util.d.ts.map +1 -0
  59. package/dist/node-lib/binding/uv.d.ts +32 -0
  60. package/dist/node-lib/binding/uv.d.ts.map +1 -0
  61. package/dist/node-lib/binding/zlib-pako.d.ts +22 -0
  62. package/dist/node-lib/binding/zlib-pako.d.ts.map +1 -0
  63. package/dist/node-lib/binding/zlib.d.ts +38 -0
  64. package/dist/node-lib/binding/zlib.d.ts.map +1 -0
  65. package/dist/node-lib/buffer-module.d.ts +51 -0
  66. package/dist/node-lib/buffer-module.d.ts.map +1 -0
  67. package/dist/node-lib/child-process-module.d.ts +26 -0
  68. package/dist/node-lib/child-process-module.d.ts.map +1 -0
  69. package/dist/node-lib/events-module.d.ts +58 -0
  70. package/dist/node-lib/events-module.d.ts.map +1 -0
  71. package/dist/node-lib/fs-module.d.ts +5 -0
  72. package/dist/node-lib/fs-module.d.ts.map +1 -0
  73. package/dist/node-lib/http-bridge.d.ts +43 -0
  74. package/dist/node-lib/http-bridge.d.ts.map +1 -0
  75. package/dist/node-lib/http-module.d.ts +35 -0
  76. package/dist/node-lib/http-module.d.ts.map +1 -0
  77. package/dist/node-lib/internals/addresses.d.ts +40 -0
  78. package/dist/node-lib/internals/addresses.d.ts.map +1 -0
  79. package/dist/node-lib/internals/buffer-and-streams.d.ts +96 -0
  80. package/dist/node-lib/internals/buffer-and-streams.d.ts.map +1 -0
  81. package/dist/node-lib/internals/child-process.d.ts +27 -0
  82. package/dist/node-lib/internals/child-process.d.ts.map +1 -0
  83. package/dist/node-lib/internals/events-util.d.ts +83 -0
  84. package/dist/node-lib/internals/events-util.d.ts.map +1 -0
  85. package/dist/node-lib/internals/index.d.ts +2 -0
  86. package/dist/node-lib/internals/index.d.ts.map +1 -0
  87. package/dist/node-lib/internals/modules.d.ts +67 -0
  88. package/dist/node-lib/internals/modules.d.ts.map +1 -0
  89. package/dist/node-lib/internals/readline-access.d.ts +2 -0
  90. package/dist/node-lib/internals/readline-access.d.ts.map +1 -0
  91. package/dist/node-lib/internals/runtime.d.ts +150 -0
  92. package/dist/node-lib/internals/runtime.d.ts.map +1 -0
  93. package/dist/node-lib/internals/util.d.ts +33 -0
  94. package/dist/node-lib/internals/util.d.ts.map +1 -0
  95. package/dist/node-lib/lazy.d.ts +31 -0
  96. package/dist/node-lib/lazy.d.ts.map +1 -0
  97. package/dist/node-lib/load.d.ts +27 -0
  98. package/dist/node-lib/load.d.ts.map +1 -0
  99. package/dist/node-lib/module-hooks.d.ts +89 -0
  100. package/dist/node-lib/module-hooks.d.ts.map +1 -0
  101. package/dist/node-lib/net-module.d.ts +181 -0
  102. package/dist/node-lib/net-module.d.ts.map +1 -0
  103. package/dist/node-lib/node-versions.d.ts +27 -0
  104. package/dist/node-lib/node-versions.d.ts.map +1 -0
  105. package/dist/node-lib/public-modules.d.ts +2 -0
  106. package/dist/node-lib/public-modules.d.ts.map +1 -0
  107. package/dist/node-lib/require-hook.d.ts +15 -0
  108. package/dist/node-lib/require-hook.d.ts.map +1 -0
  109. package/dist/node-lib/small-modules.d.ts +16 -0
  110. package/dist/node-lib/small-modules.d.ts.map +1 -0
  111. package/dist/node-lib/sources.d.ts +4 -0
  112. package/dist/node-lib/sources.d.ts.map +1 -0
  113. package/dist/node-lib/stream-module.d.ts +77 -0
  114. package/dist/node-lib/stream-module.d.ts.map +1 -0
  115. package/dist/node-lib/timers.d.ts +19 -0
  116. package/dist/node-lib/timers.d.ts.map +1 -0
  117. package/dist/node-lib/util-module.d.ts +76 -0
  118. package/dist/node-lib/util-module.d.ts.map +1 -0
  119. package/dist/node-resolution.d.ts +50 -0
  120. package/dist/node-resolution.d.ts.map +1 -0
  121. package/dist/node-resolver.d.ts +7 -0
  122. package/dist/node-resolver.d.ts.map +1 -0
  123. package/dist/npm/index.d.ts +73 -0
  124. package/dist/npm/index.d.ts.map +1 -0
  125. package/dist/npm/registry.d.ts +111 -0
  126. package/dist/npm/registry.d.ts.map +1 -0
  127. package/dist/npm/resolver.d.ts +79 -0
  128. package/dist/npm/resolver.d.ts.map +1 -0
  129. package/dist/npm/tarball.d.ts +28 -0
  130. package/dist/npm/tarball.d.ts.map +1 -0
  131. package/dist/process-tokens.d.ts +77 -0
  132. package/dist/process-tokens.d.ts.map +1 -0
  133. package/dist/punycode-source.d.ts +3 -0
  134. package/dist/punycode-source.d.ts.map +1 -0
  135. package/dist/runtime-interface.d.ts +74 -0
  136. package/dist/runtime-interface.d.ts.map +1 -0
  137. package/dist/runtime.d.ts +144 -0
  138. package/dist/runtime.d.ts.map +1 -0
  139. package/dist/server-bridge.d.ts +147 -0
  140. package/dist/server-bridge.d.ts.map +1 -0
  141. package/dist/shims/async_hooks.d.ts +50 -0
  142. package/dist/shims/async_hooks.d.ts.map +1 -0
  143. package/dist/shims/child_process.d.ts +104 -0
  144. package/dist/shims/child_process.d.ts.map +1 -0
  145. package/dist/shims/cluster.d.ts +52 -0
  146. package/dist/shims/cluster.d.ts.map +1 -0
  147. package/dist/shims/command-line.d.ts +43 -0
  148. package/dist/shims/command-line.d.ts.map +1 -0
  149. package/dist/shims/constants.d.ts +222 -0
  150. package/dist/shims/constants.d.ts.map +1 -0
  151. package/dist/shims/crypto-constants.d.ts +12 -0
  152. package/dist/shims/crypto-constants.d.ts.map +1 -0
  153. package/dist/shims/crypto.d.ts +144 -0
  154. package/dist/shims/crypto.d.ts.map +1 -0
  155. package/dist/shims/dgram.d.ts +34 -0
  156. package/dist/shims/dgram.d.ts.map +1 -0
  157. package/dist/shims/dns.d.ts +91 -0
  158. package/dist/shims/dns.d.ts.map +1 -0
  159. package/dist/shims/domain.d.ts +25 -0
  160. package/dist/shims/domain.d.ts.map +1 -0
  161. package/dist/shims/esbuild.d.ts +205 -0
  162. package/dist/shims/esbuild.d.ts.map +1 -0
  163. package/dist/shims/fs.d.ts +25 -0
  164. package/dist/shims/fs.d.ts.map +1 -0
  165. package/dist/shims/http2.d.ts +81 -0
  166. package/dist/shims/http2.d.ts.map +1 -0
  167. package/dist/shims/inspector.d.ts +25 -0
  168. package/dist/shims/inspector.d.ts.map +1 -0
  169. package/dist/shims/module.d.ts +22 -0
  170. package/dist/shims/module.d.ts.map +1 -0
  171. package/dist/shims/os.d.ts +159 -0
  172. package/dist/shims/os.d.ts.map +1 -0
  173. package/dist/shims/path.d.ts +52 -0
  174. package/dist/shims/path.d.ts.map +1 -0
  175. package/dist/shims/perf_hooks.d.ts +50 -0
  176. package/dist/shims/perf_hooks.d.ts.map +1 -0
  177. package/dist/shims/process.d.ts +226 -0
  178. package/dist/shims/process.d.ts.map +1 -0
  179. package/dist/shims/rollup.d.ts +71 -0
  180. package/dist/shims/rollup.d.ts.map +1 -0
  181. package/dist/shims/string_decoder.d.ts +41 -0
  182. package/dist/shims/string_decoder.d.ts.map +1 -0
  183. package/dist/shims/sync-child.d.ts +64 -0
  184. package/dist/shims/sync-child.d.ts.map +1 -0
  185. package/dist/shims/tls.d.ts +53 -0
  186. package/dist/shims/tls.d.ts.map +1 -0
  187. package/dist/shims/url.d.ts +84 -0
  188. package/dist/shims/url.d.ts.map +1 -0
  189. package/dist/shims/v8.d.ts +73 -0
  190. package/dist/shims/v8.d.ts.map +1 -0
  191. package/dist/shims/vfs-adapter.d.ts +126 -0
  192. package/dist/shims/vfs-adapter.d.ts.map +1 -0
  193. package/dist/shims/vm.d.ts +52 -0
  194. package/dist/shims/vm.d.ts.map +1 -0
  195. package/dist/shims/wasi.d.ts +78 -0
  196. package/dist/shims/wasi.d.ts.map +1 -0
  197. package/dist/shims/worker_threads.d.ts +66 -0
  198. package/dist/shims/worker_threads.d.ts.map +1 -0
  199. package/dist/shims/zlib-constants.d.ts +66 -0
  200. package/dist/shims/zlib-constants.d.ts.map +1 -0
  201. package/dist/shims/zlib.d.ts +102 -0
  202. package/dist/shims/zlib.d.ts.map +1 -0
  203. package/dist/transform.d.ts +24 -0
  204. package/dist/transform.d.ts.map +1 -0
  205. package/dist/types/package-json.d.ts +18 -0
  206. package/dist/types/package-json.d.ts.map +1 -0
  207. package/dist/utils/binary-encoding.d.ts +13 -0
  208. package/dist/utils/binary-encoding.d.ts.map +1 -0
  209. package/dist/utils/glob.d.ts +19 -0
  210. package/dist/utils/glob.d.ts.map +1 -0
  211. package/dist/utils/hash.d.ts +6 -0
  212. package/dist/utils/hash.d.ts.map +1 -0
  213. package/dist/virtual-fs.d.ts +259 -0
  214. package/dist/virtual-fs.d.ts.map +1 -0
  215. package/dist/vite-plugin.cjs +50 -0
  216. package/dist/vite-plugin.cjs.map +1 -0
  217. package/dist/vite-plugin.d.ts +36 -0
  218. package/dist/vite-plugin.d.ts.map +1 -0
  219. package/dist/vite-plugin.mjs +31 -0
  220. package/dist/vite-plugin.mjs.map +1 -0
  221. package/dist/worker/runtime-worker.d.ts +8 -0
  222. package/dist/worker/runtime-worker.d.ts.map +1 -0
  223. package/dist/worker-runtime.d.ts +50 -0
  224. package/dist/worker-runtime.d.ts.map +1 -0
  225. package/package.json +88 -0
  226. package/src/code-transforms.ts +560 -0
  227. package/src/config/cdn.ts +13 -0
  228. package/src/create-runtime.ts +89 -0
  229. package/src/host-globals.ts +121 -0
  230. package/src/index.ts +235 -0
  231. package/src/node-internals.ts +283 -0
  232. package/src/node-lib/LICENSE +47 -0
  233. package/src/node-lib/_http_agent.js +547 -0
  234. package/src/node-lib/_http_client.js +996 -0
  235. package/src/node-lib/_http_common.js +269 -0
  236. package/src/node-lib/_http_incoming.js +453 -0
  237. package/src/node-lib/_http_outgoing.js +1262 -0
  238. package/src/node-lib/_http_server.js +1230 -0
  239. package/src/node-lib/assert/strict.js +3 -0
  240. package/src/node-lib/assert.js +844 -0
  241. package/src/node-lib/binding/blob.ts +35 -0
  242. package/src/node-lib/binding/buffer.ts +465 -0
  243. package/src/node-lib/binding/cares_wrap.ts +57 -0
  244. package/src/node-lib/binding/fds.ts +80 -0
  245. package/src/node-lib/binding/fs.ts +857 -0
  246. package/src/node-lib/binding/handles.ts +187 -0
  247. package/src/node-lib/binding/http_parser.ts +536 -0
  248. package/src/node-lib/binding/index.ts +77 -0
  249. package/src/node-lib/binding/llhttp-wasm.ts +670 -0
  250. package/src/node-lib/binding/misc.ts +252 -0
  251. package/src/node-lib/binding/pipe_wrap.ts +166 -0
  252. package/src/node-lib/binding/process_wrap.ts +371 -0
  253. package/src/node-lib/binding/spawn_sync.ts +141 -0
  254. package/src/node-lib/binding/stream_wrap.ts +413 -0
  255. package/src/node-lib/binding/stubs.ts +19 -0
  256. package/src/node-lib/binding/tcp_wrap.ts +254 -0
  257. package/src/node-lib/binding/tty_wrap.ts +56 -0
  258. package/src/node-lib/binding/util.ts +274 -0
  259. package/src/node-lib/binding/uv.ts +102 -0
  260. package/src/node-lib/binding/zlib-pako.ts +50 -0
  261. package/src/node-lib/binding/zlib.ts +259 -0
  262. package/src/node-lib/buffer-module.ts +70 -0
  263. package/src/node-lib/buffer.js +1373 -0
  264. package/src/node-lib/child-process-module.ts +58 -0
  265. package/src/node-lib/child_process.js +1046 -0
  266. package/src/node-lib/constants.js +41 -0
  267. package/src/node-lib/diagnostics_channel.js +438 -0
  268. package/src/node-lib/events-module.ts +80 -0
  269. package/src/node-lib/events.js +1223 -0
  270. package/src/node-lib/fs-module.ts +43 -0
  271. package/src/node-lib/fs.js +3377 -0
  272. package/src/node-lib/http-bridge.ts +299 -0
  273. package/src/node-lib/http-module.ts +53 -0
  274. package/src/node-lib/http.js +198 -0
  275. package/src/node-lib/https.js +429 -0
  276. package/src/node-lib/internal/assert/assertion_error.js +417 -0
  277. package/src/node-lib/internal/assert/calltracker.js +153 -0
  278. package/src/node-lib/internal/assert/myers_diff.js +177 -0
  279. package/src/node-lib/internal/assert/utils.js +278 -0
  280. package/src/node-lib/internal/buffer.js +1120 -0
  281. package/src/node-lib/internal/child_process/serialization.js +169 -0
  282. package/src/node-lib/internal/child_process.js +1135 -0
  283. package/src/node-lib/internal/constants.js +56 -0
  284. package/src/node-lib/internal/deps/minimatch/index.js +1628 -0
  285. package/src/node-lib/internal/errors.js +1912 -0
  286. package/src/node-lib/internal/events/abort_listener.js +54 -0
  287. package/src/node-lib/internal/events/symbols.js +11 -0
  288. package/src/node-lib/internal/fixed_queue.js +119 -0
  289. package/src/node-lib/internal/freelist.js +30 -0
  290. package/src/node-lib/internal/fs/cp/cp-sync.js +242 -0
  291. package/src/node-lib/internal/fs/cp/cp.js +382 -0
  292. package/src/node-lib/internal/fs/dir.js +369 -0
  293. package/src/node-lib/internal/fs/glob.js +763 -0
  294. package/src/node-lib/internal/fs/promises.js +1312 -0
  295. package/src/node-lib/internal/fs/read/context.js +129 -0
  296. package/src/node-lib/internal/fs/recursive_watch.js +275 -0
  297. package/src/node-lib/internal/fs/rimraf.js +311 -0
  298. package/src/node-lib/internal/fs/streams.js +571 -0
  299. package/src/node-lib/internal/fs/sync_write_stream.js +49 -0
  300. package/src/node-lib/internal/fs/utils.js +987 -0
  301. package/src/node-lib/internal/fs/watchers.js +418 -0
  302. package/src/node-lib/internal/http.js +62 -0
  303. package/src/node-lib/internal/mime.js +389 -0
  304. package/src/node-lib/internal/modules/customization_hooks.js +406 -0
  305. package/src/node-lib/internal/net.js +95 -0
  306. package/src/node-lib/internal/querystring.js +119 -0
  307. package/src/node-lib/internal/readline/callbacks.js +132 -0
  308. package/src/node-lib/internal/readline/emitKeypressEvents.js +99 -0
  309. package/src/node-lib/internal/readline/interface.js +1418 -0
  310. package/src/node-lib/internal/readline/promises.js +144 -0
  311. package/src/node-lib/internal/readline/utils.js +405 -0
  312. package/src/node-lib/internal/socket_list.js +108 -0
  313. package/src/node-lib/internal/stream_base_commons.js +280 -0
  314. package/src/node-lib/internal/streams/add-abort-signal.js +60 -0
  315. package/src/node-lib/internal/streams/compose.js +257 -0
  316. package/src/node-lib/internal/streams/destroy.js +361 -0
  317. package/src/node-lib/internal/streams/duplex.js +203 -0
  318. package/src/node-lib/internal/streams/duplexify.js +379 -0
  319. package/src/node-lib/internal/streams/duplexpair.js +62 -0
  320. package/src/node-lib/internal/streams/end-of-stream.js +331 -0
  321. package/src/node-lib/internal/streams/from.js +208 -0
  322. package/src/node-lib/internal/streams/lazy_transform.js +57 -0
  323. package/src/node-lib/internal/streams/legacy.js +125 -0
  324. package/src/node-lib/internal/streams/operators.js +436 -0
  325. package/src/node-lib/internal/streams/passthrough.js +47 -0
  326. package/src/node-lib/internal/streams/pipeline.js +465 -0
  327. package/src/node-lib/internal/streams/readable.js +1762 -0
  328. package/src/node-lib/internal/streams/state.js +51 -0
  329. package/src/node-lib/internal/streams/transform.js +204 -0
  330. package/src/node-lib/internal/streams/utils.js +363 -0
  331. package/src/node-lib/internal/streams/writable.js +1163 -0
  332. package/src/node-lib/internal/tty.js +260 -0
  333. package/src/node-lib/internal/util/colors.js +40 -0
  334. package/src/node-lib/internal/util/comparisons.js +1028 -0
  335. package/src/node-lib/internal/util/debuglog.js +524 -0
  336. package/src/node-lib/internal/util/inspect.js +2535 -0
  337. package/src/node-lib/internal/util/parse_args/parse_args.js +412 -0
  338. package/src/node-lib/internal/util/parse_args/utils.js +197 -0
  339. package/src/node-lib/internal/util.js +1003 -0
  340. package/src/node-lib/internal/validators.js +654 -0
  341. package/src/node-lib/internals/addresses.ts +159 -0
  342. package/src/node-lib/internals/buffer-and-streams.ts +224 -0
  343. package/src/node-lib/internals/child-process.ts +64 -0
  344. package/src/node-lib/internals/events-util.ts +105 -0
  345. package/src/node-lib/internals/index.ts +66 -0
  346. package/src/node-lib/internals/modules.ts +117 -0
  347. package/src/node-lib/internals/readline-access.ts +16 -0
  348. package/src/node-lib/internals/runtime.ts +277 -0
  349. package/src/node-lib/internals/util.ts +98 -0
  350. package/src/node-lib/lazy.ts +158 -0
  351. package/src/node-lib/load.ts +390 -0
  352. package/src/node-lib/module-hooks.ts +281 -0
  353. package/src/node-lib/net-module.ts +248 -0
  354. package/src/node-lib/net.js +2540 -0
  355. package/src/node-lib/node-versions.ts +34 -0
  356. package/src/node-lib/os.js +356 -0
  357. package/src/node-lib/path.js +1694 -0
  358. package/src/node-lib/primordials.js +743 -0
  359. package/src/node-lib/public-modules.ts +109 -0
  360. package/src/node-lib/punycode.js +455 -0
  361. package/src/node-lib/querystring.js +484 -0
  362. package/src/node-lib/readline/promises.js +73 -0
  363. package/src/node-lib/readline.js +523 -0
  364. package/src/node-lib/require-hook.ts +27 -0
  365. package/src/node-lib/small-modules.ts +35 -0
  366. package/src/node-lib/sources.ts +200 -0
  367. package/src/node-lib/stream/promises.js +44 -0
  368. package/src/node-lib/stream-module.ts +101 -0
  369. package/src/node-lib/stream.js +152 -0
  370. package/src/node-lib/timers.ts +33 -0
  371. package/src/node-lib/tty.js +168 -0
  372. package/src/node-lib/util-module.ts +104 -0
  373. package/src/node-lib/util.js +689 -0
  374. package/src/node-lib/wasi.js +179 -0
  375. package/src/node-lib/zlib.js +1036 -0
  376. package/src/node-resolution.ts +241 -0
  377. package/src/node-resolver.ts +33 -0
  378. package/src/npm/index.ts +425 -0
  379. package/src/npm/registry.ts +235 -0
  380. package/src/npm/resolver.ts +589 -0
  381. package/src/npm/tarball.ts +246 -0
  382. package/src/process-tokens.ts +156 -0
  383. package/src/punycode-source.ts +6 -0
  384. package/src/runtime-interface.ts +85 -0
  385. package/src/runtime.ts +3073 -0
  386. package/src/server-bridge.ts +971 -0
  387. package/src/shims/async_hooks.ts +181 -0
  388. package/src/shims/child_process.ts +1591 -0
  389. package/src/shims/cluster.ts +79 -0
  390. package/src/shims/command-line.ts +79 -0
  391. package/src/shims/constants.ts +68 -0
  392. package/src/shims/crypto-constants.ts +11 -0
  393. package/src/shims/crypto.ts +1061 -0
  394. package/src/shims/dgram.ts +47 -0
  395. package/src/shims/dns.ts +185 -0
  396. package/src/shims/domain.ts +58 -0
  397. package/src/shims/esbuild.ts +1638 -0
  398. package/src/shims/fs.ts +82 -0
  399. package/src/shims/http2.ts +96 -0
  400. package/src/shims/inspector.ts +30 -0
  401. package/src/shims/module.ts +86 -0
  402. package/src/shims/os.ts +195 -0
  403. package/src/shims/path.ts +246 -0
  404. package/src/shims/perf_hooks.ts +92 -0
  405. package/src/shims/process.ts +804 -0
  406. package/src/shims/rollup.ts +149 -0
  407. package/src/shims/string_decoder.ts +396 -0
  408. package/src/shims/sync-child.ts +469 -0
  409. package/src/shims/tls.ts +94 -0
  410. package/src/shims/url.ts +217 -0
  411. package/src/shims/v8.ts +113 -0
  412. package/src/shims/vfs-adapter.ts +408 -0
  413. package/src/shims/vm.ts +132 -0
  414. package/src/shims/wasi.ts +1440 -0
  415. package/src/shims/worker_threads.ts +114 -0
  416. package/src/shims/zlib-constants.ts +65 -0
  417. package/src/shims/zlib.ts +228 -0
  418. package/src/transform.ts +324 -0
  419. package/src/types/external.d.ts +55 -0
  420. package/src/types/package-json.ts +17 -0
  421. package/src/types/pako-zlib.d.ts +30 -0
  422. package/src/types/sha.js.d.ts +14 -0
  423. package/src/utils/binary-encoding.ts +43 -0
  424. package/src/utils/glob.ts +54 -0
  425. package/src/utils/hash.ts +12 -0
  426. package/src/virtual-fs.ts +1048 -0
  427. package/src/vite-plugin.ts +76 -0
  428. package/src/worker/runtime-worker.ts +128 -0
  429. package/src/worker-runtime.ts +145 -0
@@ -0,0 +1,129 @@
1
+ 'use strict';
2
+
3
+ const {
4
+ ArrayPrototypePush,
5
+ MathMin,
6
+ ReflectApply,
7
+ } = primordials;
8
+
9
+ const {
10
+ constants: {
11
+ kReadFileBufferLength,
12
+ kReadFileUnknownBufferLength,
13
+ },
14
+ } = require('internal/fs/utils');
15
+
16
+ const { Buffer } = require('buffer');
17
+
18
+ const { FSReqCallback, close, read } = internalBinding('fs');
19
+
20
+ const {
21
+ AbortError,
22
+ aggregateTwoErrors,
23
+ } = require('internal/errors');
24
+
25
+ function readFileAfterRead(err, bytesRead) {
26
+ const context = this.context;
27
+
28
+ if (err)
29
+ return context.close(err);
30
+
31
+ context.pos += bytesRead;
32
+
33
+ if (context.pos === context.size || bytesRead === 0) {
34
+ context.close();
35
+ } else {
36
+ if (context.size === 0) {
37
+ // Unknown size, just read until we don't get bytes.
38
+ const buffer = bytesRead === kReadFileUnknownBufferLength ?
39
+ context.buffer : context.buffer.slice(0, bytesRead);
40
+ ArrayPrototypePush(context.buffers, buffer);
41
+ }
42
+ context.read();
43
+ }
44
+ }
45
+
46
+ function readFileAfterClose(err) {
47
+ const context = this.context;
48
+ const callback = context.callback;
49
+ let buffer = null;
50
+
51
+ if (context.err || err)
52
+ return callback(aggregateTwoErrors(err, context.err));
53
+
54
+ try {
55
+ if (context.size === 0)
56
+ buffer = Buffer.concat(context.buffers, context.pos);
57
+ else if (context.pos < context.size)
58
+ buffer = context.buffer.slice(0, context.pos);
59
+ else
60
+ buffer = context.buffer;
61
+
62
+ if (context.encoding)
63
+ buffer = buffer.toString(context.encoding);
64
+ } catch (err) {
65
+ return callback(err);
66
+ }
67
+
68
+ callback(null, buffer);
69
+ }
70
+
71
+ class ReadFileContext {
72
+ constructor(callback, encoding) {
73
+ this.fd = undefined;
74
+ this.isUserFd = undefined;
75
+ this.size = 0;
76
+ this.callback = callback;
77
+ this.buffers = null;
78
+ this.buffer = null;
79
+ this.pos = 0;
80
+ this.encoding = encoding;
81
+ this.err = null;
82
+ this.signal = undefined;
83
+ }
84
+
85
+ read() {
86
+ let buffer;
87
+ let offset;
88
+ let length;
89
+
90
+ if (this.signal?.aborted) {
91
+ return this.close(
92
+ new AbortError(undefined, { cause: this.signal.reason }));
93
+ }
94
+ if (this.size === 0) {
95
+ buffer = Buffer.allocUnsafeSlow(kReadFileUnknownBufferLength);
96
+ offset = 0;
97
+ length = kReadFileUnknownBufferLength;
98
+ this.buffer = buffer;
99
+ } else {
100
+ buffer = this.buffer;
101
+ offset = this.pos;
102
+ length = MathMin(kReadFileBufferLength, this.size - this.pos);
103
+ }
104
+
105
+ const req = new FSReqCallback();
106
+ req.oncomplete = readFileAfterRead;
107
+ req.context = this;
108
+
109
+ read(this.fd, buffer, offset, length, -1, req);
110
+ }
111
+
112
+ close(err) {
113
+ if (this.isUserFd) {
114
+ process.nextTick(function tick(context) {
115
+ ReflectApply(readFileAfterClose, { context }, [null]);
116
+ }, this);
117
+ return;
118
+ }
119
+
120
+ const req = new FSReqCallback();
121
+ req.oncomplete = readFileAfterClose;
122
+ req.context = this;
123
+ this.err = err;
124
+
125
+ close(this.fd, req);
126
+ }
127
+ }
128
+
129
+ module.exports = ReadFileContext;
@@ -0,0 +1,275 @@
1
+ 'use strict';
2
+
3
+ const {
4
+ Promise,
5
+ SafeMap,
6
+ SafeSet,
7
+ StringPrototypeStartsWith,
8
+ SymbolAsyncIterator,
9
+ } = primordials;
10
+
11
+ const { EventEmitter } = require('events');
12
+ const assert = require('internal/assert');
13
+ const {
14
+ AbortError,
15
+ codes: {
16
+ ERR_INVALID_ARG_VALUE,
17
+ },
18
+ } = require('internal/errors');
19
+ const { getValidatedPath } = require('internal/fs/utils');
20
+ const { kFSWatchStart, StatWatcher } = require('internal/fs/watchers');
21
+ const { kEmptyObject } = require('internal/util');
22
+ const { validateBoolean, validateAbortSignal } = require('internal/validators');
23
+ const {
24
+ basename: pathBasename,
25
+ join: pathJoin,
26
+ relative: pathRelative,
27
+ resolve: pathResolve,
28
+ } = require('path');
29
+
30
+ let internalSync;
31
+
32
+ function lazyLoadFsSync() {
33
+ internalSync ??= require('fs');
34
+ return internalSync;
35
+ }
36
+
37
+ let kResistStopPropagation;
38
+
39
+ class FSWatcher extends EventEmitter {
40
+ #options = null;
41
+ #closed = false;
42
+ #files = new SafeMap();
43
+ #watchers = new SafeMap();
44
+ #symbolicFiles = new SafeSet();
45
+ #rootPath = pathResolve();
46
+ #watchingFile = false;
47
+
48
+ constructor(options = kEmptyObject) {
49
+ super();
50
+
51
+ assert(typeof options === 'object');
52
+
53
+ const { persistent, recursive, signal, encoding } = options;
54
+
55
+ // TODO(anonrig): Add non-recursive support to non-native-watcher for IBMi & AIX support.
56
+ if (recursive != null) {
57
+ validateBoolean(recursive, 'options.recursive');
58
+ }
59
+
60
+ if (persistent != null) {
61
+ validateBoolean(persistent, 'options.persistent');
62
+ }
63
+
64
+ if (signal != null) {
65
+ validateAbortSignal(signal, 'options.signal');
66
+ }
67
+
68
+ if (encoding != null) {
69
+ // This is required since on macOS and Windows it throws ERR_INVALID_ARG_VALUE
70
+ if (typeof encoding !== 'string') {
71
+ throw new ERR_INVALID_ARG_VALUE(encoding, 'options.encoding');
72
+ }
73
+ }
74
+
75
+ this.#options = { persistent, recursive, signal, encoding };
76
+ }
77
+
78
+ close() {
79
+ if (this.#closed) {
80
+ return;
81
+ }
82
+
83
+ this.#closed = true;
84
+
85
+ for (const file of this.#files.keys()) {
86
+ this.#watchers.get(file)?.close();
87
+ this.#watchers.delete(file);
88
+ }
89
+
90
+ this.#files.clear();
91
+ this.#symbolicFiles.clear();
92
+ this.emit('close');
93
+ }
94
+
95
+ #unwatchFiles(file) {
96
+ this.#symbolicFiles.delete(file);
97
+
98
+ for (const filename of this.#files.keys()) {
99
+ if (StringPrototypeStartsWith(filename, file)) {
100
+ this.#files.delete(filename);
101
+ this.#watchers.get(filename)?.close();
102
+ this.#watchers.delete(filename);
103
+ }
104
+ }
105
+ }
106
+
107
+ #watchFolder(folder) {
108
+ const { readdirSync } = lazyLoadFsSync();
109
+
110
+ try {
111
+ const files = readdirSync(folder, {
112
+ withFileTypes: true,
113
+ });
114
+
115
+ for (const file of files) {
116
+ if (this.#closed) {
117
+ break;
118
+ }
119
+
120
+ const f = pathJoin(folder, file.name);
121
+
122
+ if (!this.#files.has(f)) {
123
+ this.emit('change', 'rename', pathRelative(this.#rootPath, f));
124
+
125
+ if (file.isSymbolicLink()) {
126
+ this.#symbolicFiles.add(f);
127
+ }
128
+
129
+ try {
130
+ this.#watchFile(f);
131
+ if (file.isDirectory() && !file.isSymbolicLink()) {
132
+ this.#watchFolder(f);
133
+ }
134
+ } catch (err) {
135
+ // Ignore ENOENT
136
+ if (err.code !== 'ENOENT') {
137
+ throw err;
138
+ }
139
+ }
140
+ }
141
+ }
142
+ } catch (error) {
143
+ this.emit('error', error);
144
+ }
145
+ }
146
+
147
+ #watchFile(file) {
148
+ if (this.#closed) {
149
+ return;
150
+ }
151
+
152
+ const { watch, statSync } = lazyLoadFsSync();
153
+
154
+ if (this.#files.has(file)) {
155
+ return;
156
+ }
157
+
158
+ {
159
+ const existingStat = statSync(file);
160
+ this.#files.set(file, existingStat);
161
+ }
162
+
163
+ const watcher = watch(file, {
164
+ persistent: this.#options.persistent,
165
+ }, (eventType, filename) => {
166
+ const existingStat = this.#files.get(file);
167
+ let currentStats;
168
+
169
+ try {
170
+ currentStats = statSync(file);
171
+ this.#files.set(file, currentStats);
172
+ } catch {
173
+ // This happens if the file was removed
174
+ }
175
+
176
+ if (currentStats === undefined || (currentStats.birthtimeMs === 0 && existingStat.birthtimeMs !== 0)) {
177
+ // The file is now deleted
178
+ this.#files.delete(file);
179
+ this.#watchers.delete(file);
180
+ watcher.close();
181
+ this.emit('change', 'rename', pathRelative(this.#rootPath, file));
182
+ this.#unwatchFiles(file);
183
+ } else if (file === this.#rootPath && this.#watchingFile) {
184
+ // This case will only be triggered when watching a file with fs.watch
185
+ this.emit('change', 'change', pathBasename(file));
186
+ } else if (this.#symbolicFiles.has(file)) {
187
+ // Stats from watchFile does not return correct value for currentStats.isSymbolicLink()
188
+ // Since it is only valid when using fs.lstat(). Therefore, check the existing symbolic files.
189
+ this.emit('change', 'rename', pathRelative(this.#rootPath, file));
190
+ } else if (currentStats.isDirectory()) {
191
+ this.#watchFolder(file);
192
+ } else {
193
+ // Watching a directory will trigger a change event for child files)
194
+ this.emit('change', 'change', pathRelative(this.#rootPath, file));
195
+ }
196
+ });
197
+ this.#watchers.set(file, watcher);
198
+ }
199
+
200
+ [kFSWatchStart](filename) {
201
+ filename = pathResolve(getValidatedPath(filename));
202
+
203
+ try {
204
+ const file = lazyLoadFsSync().statSync(filename);
205
+
206
+ this.#rootPath = filename;
207
+ this.#closed = false;
208
+ this.#watchingFile = file.isFile();
209
+
210
+ this.#watchFile(filename);
211
+ if (file.isDirectory()) {
212
+ this.#watchFolder(filename);
213
+ }
214
+ } catch (error) {
215
+ if (error.code === 'ENOENT') {
216
+ error.filename = filename;
217
+ throw error;
218
+ }
219
+ }
220
+
221
+ }
222
+
223
+ ref() {
224
+ this.#files.forEach((file) => {
225
+ if (file instanceof StatWatcher) {
226
+ file.ref();
227
+ }
228
+ });
229
+ }
230
+
231
+ unref() {
232
+ this.#files.forEach((file) => {
233
+ if (file instanceof StatWatcher) {
234
+ file.unref();
235
+ }
236
+ });
237
+ }
238
+
239
+ [SymbolAsyncIterator]() {
240
+ const { signal } = this.#options;
241
+ const promiseExecutor = signal == null ?
242
+ (resolve) => {
243
+ this.once('change', (eventType, filename) => {
244
+ resolve({ __proto__: null, value: { eventType, filename } });
245
+ });
246
+ } : (resolve, reject) => {
247
+ const onAbort = () => {
248
+ this.close();
249
+ reject(new AbortError(undefined, { cause: signal.reason }));
250
+ };
251
+ if (signal.aborted) return onAbort();
252
+ kResistStopPropagation ??= require('internal/event_target').kResistStopPropagation;
253
+ signal.addEventListener('abort', onAbort, { __proto__: null, once: true, [kResistStopPropagation]: true });
254
+ this.once('change', (eventType, filename) => {
255
+ signal.removeEventListener('abort', onAbort);
256
+ resolve({ __proto__: null, value: { eventType, filename } });
257
+ });
258
+ };
259
+ return {
260
+ next: () => (this.#closed ?
261
+ { __proto__: null, done: true } :
262
+ new Promise(promiseExecutor)),
263
+ return: () => {
264
+ this.close();
265
+ return { __proto__: null, done: true };
266
+ },
267
+ [SymbolAsyncIterator]() { return this; },
268
+ };
269
+ }
270
+ }
271
+
272
+ module.exports = {
273
+ FSWatcher,
274
+ kFSWatchStart,
275
+ };
@@ -0,0 +1,311 @@
1
+ // This file is a modified version of the rimraf module on npm. It has been
2
+ // modified in the following ways:
3
+ // - Use of the assert module has been replaced with core's error system.
4
+ // - All code related to the glob dependency has been removed.
5
+ // - Bring your own custom fs module is not currently supported.
6
+ // - Some basic code cleanup.
7
+ 'use strict';
8
+
9
+ const {
10
+ ArrayPrototypeForEach,
11
+ Promise,
12
+ SafeSet,
13
+ } = primordials;
14
+
15
+ const { Buffer } = require('buffer');
16
+ const fs = require('fs');
17
+ const {
18
+ chmod,
19
+ chmodSync,
20
+ lstat,
21
+ lstatSync,
22
+ readdir,
23
+ readdirSync,
24
+ rmdir,
25
+ rmdirSync,
26
+ stat,
27
+ statSync,
28
+ unlink,
29
+ unlinkSync,
30
+ } = fs;
31
+ const { sep } = require('path');
32
+ const { setTimeout } = require('timers');
33
+ const { sleep, isWindows } = require('internal/util');
34
+ const notEmptyErrorCodes = new SafeSet(['ENOTEMPTY', 'EEXIST', 'EPERM']);
35
+ const retryErrorCodes = new SafeSet(
36
+ ['EBUSY', 'EMFILE', 'ENFILE', 'ENOTEMPTY', 'EPERM']);
37
+ const epermHandler = isWindows ? fixWinEPERM : _rmdir;
38
+ const epermHandlerSync = isWindows ? fixWinEPERMSync : _rmdirSync;
39
+ const readdirEncoding = 'buffer';
40
+ const separator = Buffer.from(sep);
41
+
42
+
43
+ function rimraf(path, options, callback) {
44
+ let retries = 0;
45
+
46
+ _rimraf(path, options, function CB(err) {
47
+ if (err) {
48
+ if (retryErrorCodes.has(err.code) && retries < options.maxRetries) {
49
+ retries++;
50
+ const delay = retries * options.retryDelay;
51
+ return setTimeout(_rimraf, delay, path, options, CB);
52
+ }
53
+
54
+ // The file is already gone.
55
+ if (err.code === 'ENOENT')
56
+ err = null;
57
+ }
58
+
59
+ callback(err);
60
+ });
61
+ }
62
+
63
+
64
+ function _rimraf(path, options, callback) {
65
+ // SunOS lets the root user unlink directories. Use lstat here to make sure
66
+ // it's not a directory.
67
+ lstat(path, (err, stats) => {
68
+ if (err) {
69
+ if (err.code === 'ENOENT')
70
+ return callback(null);
71
+
72
+ // Windows can EPERM on stat.
73
+ if (isWindows && err.code === 'EPERM')
74
+ return fixWinEPERM(path, options, err, callback);
75
+ } else if (stats.isDirectory()) {
76
+ return _rmdir(path, options, err, callback);
77
+ }
78
+
79
+ unlink(path, (err) => {
80
+ if (err) {
81
+ if (err.code === 'ENOENT')
82
+ return callback(null);
83
+ if (err.code === 'EISDIR')
84
+ return _rmdir(path, options, err, callback);
85
+ if (err.code === 'EPERM') {
86
+ return epermHandler(path, options, err, callback);
87
+ }
88
+ }
89
+
90
+ return callback(err);
91
+ });
92
+ });
93
+ }
94
+
95
+
96
+ function fixWinEPERM(path, options, originalErr, callback) {
97
+ chmod(path, 0o666, (err) => {
98
+ if (err)
99
+ return callback(err.code === 'ENOENT' ? null : originalErr);
100
+
101
+ stat(path, (err, stats) => {
102
+ if (err)
103
+ return callback(err.code === 'ENOENT' ? null : originalErr);
104
+
105
+ if (stats.isDirectory())
106
+ _rmdir(path, options, originalErr, callback);
107
+ else
108
+ unlink(path, callback);
109
+ });
110
+ });
111
+ }
112
+
113
+
114
+ function _rmdir(path, options, originalErr, callback) {
115
+ rmdir(path, (err) => {
116
+ if (err) {
117
+ if (notEmptyErrorCodes.has(err.code))
118
+ return _rmchildren(path, options, callback);
119
+ if (err.code === 'ENOTDIR')
120
+ return callback(originalErr);
121
+ }
122
+
123
+ callback(err);
124
+ });
125
+ }
126
+
127
+
128
+ function _rmchildren(path, options, callback) {
129
+ const pathBuf = Buffer.from(path);
130
+
131
+ readdir(pathBuf, readdirEncoding, (err, files) => {
132
+ if (err)
133
+ return callback(err);
134
+
135
+ let numFiles = files.length;
136
+
137
+ if (numFiles === 0)
138
+ return rmdir(path, callback);
139
+
140
+ let done = false;
141
+
142
+ const childPathPrefix = Buffer.concat([pathBuf, separator]);
143
+
144
+ for (let i = 0; i < files.length; i++) {
145
+ const childPath = Buffer.concat([childPathPrefix, files[i]]);
146
+
147
+ rimraf(childPath, options, (err) => {
148
+ if (done)
149
+ return;
150
+
151
+ if (err) {
152
+ done = true;
153
+ return callback(err);
154
+ }
155
+
156
+ numFiles--;
157
+ if (numFiles === 0)
158
+ rmdir(path, callback);
159
+ });
160
+ }
161
+ });
162
+ }
163
+
164
+
165
+ function rimrafPromises(path, options) {
166
+ return new Promise((resolve, reject) => {
167
+ rimraf(path, options, (err) => {
168
+ if (err)
169
+ return reject(err);
170
+
171
+ resolve();
172
+ });
173
+ });
174
+ }
175
+
176
+
177
+ function rimrafSync(path, options) {
178
+ let stats;
179
+
180
+ try {
181
+ stats = lstatSync(path);
182
+ } catch (err) {
183
+ if (err.code === 'ENOENT')
184
+ return;
185
+
186
+ // Windows can EPERM on stat.
187
+ if (isWindows && err.code === 'EPERM')
188
+ fixWinEPERMSync(path, options, err);
189
+ }
190
+
191
+ try {
192
+ // SunOS lets the root user unlink directories.
193
+ if (stats?.isDirectory())
194
+ _rmdirSync(path, options, null);
195
+ else
196
+ _unlinkSync(path, options);
197
+ } catch (err) {
198
+ if (err.code === 'ENOENT')
199
+ return;
200
+ if (err.code === 'EPERM')
201
+ return epermHandlerSync(path, options, err);
202
+ if (err.code !== 'EISDIR')
203
+ throw err;
204
+
205
+ _rmdirSync(path, options, err);
206
+ }
207
+ }
208
+
209
+
210
+ function _unlinkSync(path, options) {
211
+ const tries = options.maxRetries + 1;
212
+
213
+ for (let i = 1; i <= tries; i++) {
214
+ try {
215
+ return unlinkSync(path);
216
+ } catch (err) {
217
+ // Only sleep if this is not the last try, and the delay is greater
218
+ // than zero, and an error was encountered that warrants a retry.
219
+ if (retryErrorCodes.has(err.code) &&
220
+ i < tries &&
221
+ options.retryDelay > 0) {
222
+ sleep(i * options.retryDelay);
223
+ } else if (err.code === 'ENOENT') {
224
+ // The file is already gone.
225
+ return;
226
+ } else if (i === tries) {
227
+ throw err;
228
+ }
229
+ }
230
+ }
231
+ }
232
+
233
+
234
+ function _rmdirSync(path, options, originalErr) {
235
+ try {
236
+ rmdirSync(path);
237
+ } catch (err) {
238
+ if (err.code === 'ENOENT')
239
+ return;
240
+ if (err.code === 'ENOTDIR') {
241
+ throw originalErr || err;
242
+ }
243
+
244
+ if (notEmptyErrorCodes.has(err.code)) {
245
+ // Removing failed. Try removing all children and then retrying the
246
+ // original removal. Windows has a habit of not closing handles promptly
247
+ // when files are deleted, resulting in spurious ENOTEMPTY failures. Work
248
+ // around that issue by retrying on Windows.
249
+ const pathBuf = Buffer.from(path);
250
+
251
+ ArrayPrototypeForEach(readdirSync(pathBuf, readdirEncoding), (child) => {
252
+ const childPath = Buffer.concat([pathBuf, separator, child]);
253
+
254
+ rimrafSync(childPath, options);
255
+ });
256
+
257
+ const tries = options.maxRetries + 1;
258
+
259
+ for (let i = 1; i <= tries; i++) {
260
+ try {
261
+ return fs.rmdirSync(path);
262
+ } catch (err) {
263
+ // Only sleep if this is not the last try, and the delay is greater
264
+ // than zero, and an error was encountered that warrants a retry.
265
+ if (retryErrorCodes.has(err.code) &&
266
+ i < tries &&
267
+ options.retryDelay > 0) {
268
+ sleep(i * options.retryDelay);
269
+ } else if (err.code === 'ENOENT') {
270
+ // The file is already gone.
271
+ return;
272
+ } else if (i === tries) {
273
+ throw err;
274
+ }
275
+ }
276
+ }
277
+ }
278
+
279
+ throw originalErr || err;
280
+ }
281
+ }
282
+
283
+
284
+ function fixWinEPERMSync(path, options, originalErr) {
285
+ try {
286
+ chmodSync(path, 0o666);
287
+ } catch (err) {
288
+ if (err.code === 'ENOENT')
289
+ return;
290
+
291
+ throw originalErr;
292
+ }
293
+
294
+ let stats;
295
+
296
+ try {
297
+ stats = statSync(path, { throwIfNoEntry: false });
298
+ } catch {
299
+ throw originalErr;
300
+ }
301
+
302
+ if (stats === undefined) return;
303
+
304
+ if (stats.isDirectory())
305
+ _rmdirSync(path, options, originalErr);
306
+ else
307
+ _unlinkSync(path, options);
308
+ }
309
+
310
+
311
+ module.exports = { rimraf, rimrafPromises, rimrafSync };