pnpm 11.23.0 → 11.25.0

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 (444) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/README.md +12 -0
  3. package/dist/node_modules/picomatch/lib/parse.js +10 -1
  4. package/dist/node_modules/picomatch/lib/scan.js +30 -18
  5. package/dist/node_modules/picomatch/package.json +1 -1
  6. package/dist/pnpm.mjs +13583 -8944
  7. package/dist/worker.js +732 -646
  8. package/package.json +1 -1
  9. package/artifacts/exe/dist/node-gyp-bin/node-gyp +0 -6
  10. package/artifacts/exe/dist/node-gyp-bin/node-gyp.cmd +0 -5
  11. package/artifacts/exe/dist/node_modules/.bin/node-gyp +0 -50
  12. package/artifacts/exe/dist/node_modules/.bin/node-which +0 -50
  13. package/artifacts/exe/dist/node_modules/.bin/nopt +0 -50
  14. package/artifacts/exe/dist/node_modules/.bin/semver +0 -50
  15. package/artifacts/exe/dist/node_modules/.package-map.json +0 -1
  16. package/artifacts/exe/dist/node_modules/@isaacs/fs-minipass/LICENSE +0 -15
  17. package/artifacts/exe/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +0 -430
  18. package/artifacts/exe/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +0 -3
  19. package/artifacts/exe/dist/node_modules/@isaacs/fs-minipass/dist/esm/index.js +0 -420
  20. package/artifacts/exe/dist/node_modules/@isaacs/fs-minipass/dist/esm/package.json +0 -3
  21. package/artifacts/exe/dist/node_modules/@isaacs/fs-minipass/package.json +0 -72
  22. package/artifacts/exe/dist/node_modules/abbrev/LICENSE +0 -46
  23. package/artifacts/exe/dist/node_modules/abbrev/lib/index.js +0 -53
  24. package/artifacts/exe/dist/node_modules/abbrev/package.json +0 -41
  25. package/artifacts/exe/dist/node_modules/chownr/dist/commonjs/index.js +0 -93
  26. package/artifacts/exe/dist/node_modules/chownr/dist/commonjs/package.json +0 -3
  27. package/artifacts/exe/dist/node_modules/chownr/dist/esm/index.js +0 -85
  28. package/artifacts/exe/dist/node_modules/chownr/dist/esm/package.json +0 -3
  29. package/artifacts/exe/dist/node_modules/chownr/package.json +0 -69
  30. package/artifacts/exe/dist/node_modules/env-paths/index.js +0 -74
  31. package/artifacts/exe/dist/node_modules/env-paths/license +0 -9
  32. package/artifacts/exe/dist/node_modules/env-paths/package.json +0 -45
  33. package/artifacts/exe/dist/node_modules/exponential-backoff/LICENSE +0 -202
  34. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/backoff.js +0 -124
  35. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js +0 -25
  36. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/delay/delay.base.js +0 -45
  37. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js +0 -17
  38. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js +0 -3
  39. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js +0 -82
  40. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js +0 -8
  41. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js +0 -15
  42. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js +0 -7
  43. package/artifacts/exe/dist/node_modules/exponential-backoff/dist/options.js +0 -31
  44. package/artifacts/exe/dist/node_modules/exponential-backoff/package.json +0 -62
  45. package/artifacts/exe/dist/node_modules/fdir/LICENSE +0 -7
  46. package/artifacts/exe/dist/node_modules/fdir/dist/index.cjs +0 -588
  47. package/artifacts/exe/dist/node_modules/fdir/dist/index.d.cts +0 -155
  48. package/artifacts/exe/dist/node_modules/fdir/dist/index.d.mts +0 -155
  49. package/artifacts/exe/dist/node_modules/fdir/dist/index.mjs +0 -570
  50. package/artifacts/exe/dist/node_modules/fdir/package.json +0 -103
  51. package/artifacts/exe/dist/node_modules/graceful-fs/LICENSE +0 -15
  52. package/artifacts/exe/dist/node_modules/graceful-fs/clone.js +0 -23
  53. package/artifacts/exe/dist/node_modules/graceful-fs/graceful-fs.js +0 -448
  54. package/artifacts/exe/dist/node_modules/graceful-fs/legacy-streams.js +0 -118
  55. package/artifacts/exe/dist/node_modules/graceful-fs/package.json +0 -53
  56. package/artifacts/exe/dist/node_modules/graceful-fs/polyfills.js +0 -355
  57. package/artifacts/exe/dist/node_modules/isexe/dist/commonjs/index.js +0 -56
  58. package/artifacts/exe/dist/node_modules/isexe/dist/commonjs/index.min.js +0 -2
  59. package/artifacts/exe/dist/node_modules/isexe/dist/commonjs/options.js +0 -3
  60. package/artifacts/exe/dist/node_modules/isexe/dist/commonjs/package.json +0 -3
  61. package/artifacts/exe/dist/node_modules/isexe/dist/commonjs/posix.js +0 -67
  62. package/artifacts/exe/dist/node_modules/isexe/dist/commonjs/win32.js +0 -63
  63. package/artifacts/exe/dist/node_modules/isexe/dist/esm/index.js +0 -16
  64. package/artifacts/exe/dist/node_modules/isexe/dist/esm/index.min.js +0 -2
  65. package/artifacts/exe/dist/node_modules/isexe/dist/esm/options.js +0 -2
  66. package/artifacts/exe/dist/node_modules/isexe/dist/esm/package.json +0 -3
  67. package/artifacts/exe/dist/node_modules/isexe/dist/esm/posix.js +0 -62
  68. package/artifacts/exe/dist/node_modules/isexe/dist/esm/win32.js +0 -58
  69. package/artifacts/exe/dist/node_modules/isexe/package.json +0 -78
  70. package/artifacts/exe/dist/node_modules/minipass/dist/commonjs/index.js +0 -1038
  71. package/artifacts/exe/dist/node_modules/minipass/dist/commonjs/package.json +0 -3
  72. package/artifacts/exe/dist/node_modules/minipass/dist/esm/index.js +0 -1020
  73. package/artifacts/exe/dist/node_modules/minipass/dist/esm/package.json +0 -3
  74. package/artifacts/exe/dist/node_modules/minipass/package.json +0 -77
  75. package/artifacts/exe/dist/node_modules/minizlib/LICENSE +0 -26
  76. package/artifacts/exe/dist/node_modules/minizlib/dist/commonjs/constants.js +0 -123
  77. package/artifacts/exe/dist/node_modules/minizlib/dist/commonjs/index.js +0 -416
  78. package/artifacts/exe/dist/node_modules/minizlib/dist/commonjs/package.json +0 -3
  79. package/artifacts/exe/dist/node_modules/minizlib/dist/esm/constants.js +0 -117
  80. package/artifacts/exe/dist/node_modules/minizlib/dist/esm/index.js +0 -363
  81. package/artifacts/exe/dist/node_modules/minizlib/dist/esm/package.json +0 -3
  82. package/artifacts/exe/dist/node_modules/minizlib/package.json +0 -80
  83. package/artifacts/exe/dist/node_modules/node-gyp/.release-please-manifest.json +0 -3
  84. package/artifacts/exe/dist/node_modules/node-gyp/LICENSE +0 -24
  85. package/artifacts/exe/dist/node_modules/node-gyp/addon.gypi +0 -204
  86. package/artifacts/exe/dist/node_modules/node-gyp/bin/node-gyp.js +0 -145
  87. package/artifacts/exe/dist/node_modules/node-gyp/eslint.config.js +0 -3
  88. package/artifacts/exe/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +0 -3
  89. package/artifacts/exe/dist/node_modules/node-gyp/gyp/LICENSE +0 -28
  90. package/artifacts/exe/dist/node_modules/node-gyp/gyp/data/ninja/build.ninja +0 -4
  91. package/artifacts/exe/dist/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +0 -12
  92. package/artifacts/exe/dist/node_modules/node-gyp/gyp/gyp +0 -8
  93. package/artifacts/exe/dist/node_modules/node-gyp/gyp/gyp.bat +0 -5
  94. package/artifacts/exe/dist/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  95. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -365
  96. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  97. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1283
  98. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1545
  99. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  100. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -152
  101. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -270
  102. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -607
  103. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -706
  104. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -725
  105. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -186
  106. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -170
  107. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -113
  108. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  109. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  110. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -805
  111. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1169
  112. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1316
  113. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -128
  114. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -104
  115. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -461
  116. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -88
  117. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -55
  118. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2755
  119. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3970
  120. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  121. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2957
  122. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -77
  123. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1389
  124. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -26
  125. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3097
  126. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -99
  127. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -765
  128. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1255
  129. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  130. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  131. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -371
  132. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1936
  133. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +0 -54
  134. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -301
  135. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3180
  136. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -64
  137. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +0 -3
  138. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +0 -177
  139. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +0 -23
  140. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +0 -15
  141. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +0 -107
  142. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +0 -252
  143. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +0 -83
  144. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +0 -359
  145. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +0 -61
  146. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +0 -192
  147. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/markers.py +0 -251
  148. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +0 -807
  149. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  150. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +0 -90
  151. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +0 -1030
  152. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +0 -541
  153. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/utils.py +0 -172
  154. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pylib/packaging/version.py +0 -563
  155. package/artifacts/exe/dist/node_modules/node-gyp/gyp/pyproject.toml +0 -116
  156. package/artifacts/exe/dist/node_modules/node-gyp/gyp/release-please-config.json +0 -11
  157. package/artifacts/exe/dist/node_modules/node-gyp/gyp/test_gyp.py +0 -260
  158. package/artifacts/exe/dist/node_modules/node-gyp/lib/Find-VisualStudio.cs +0 -250
  159. package/artifacts/exe/dist/node_modules/node-gyp/lib/build.js +0 -230
  160. package/artifacts/exe/dist/node_modules/node-gyp/lib/clean.js +0 -15
  161. package/artifacts/exe/dist/node_modules/node-gyp/lib/configure.js +0 -328
  162. package/artifacts/exe/dist/node_modules/node-gyp/lib/create-config-gypi.js +0 -153
  163. package/artifacts/exe/dist/node_modules/node-gyp/lib/download.js +0 -86
  164. package/artifacts/exe/dist/node_modules/node-gyp/lib/find-node-directory.js +0 -63
  165. package/artifacts/exe/dist/node_modules/node-gyp/lib/find-python.js +0 -304
  166. package/artifacts/exe/dist/node_modules/node-gyp/lib/find-visualstudio.js +0 -606
  167. package/artifacts/exe/dist/node_modules/node-gyp/lib/install.js +0 -411
  168. package/artifacts/exe/dist/node_modules/node-gyp/lib/list.js +0 -26
  169. package/artifacts/exe/dist/node_modules/node-gyp/lib/log.js +0 -168
  170. package/artifacts/exe/dist/node_modules/node-gyp/lib/node-gyp.js +0 -199
  171. package/artifacts/exe/dist/node_modules/node-gyp/lib/process-release.js +0 -144
  172. package/artifacts/exe/dist/node_modules/node-gyp/lib/rebuild.js +0 -12
  173. package/artifacts/exe/dist/node_modules/node-gyp/lib/remove.js +0 -43
  174. package/artifacts/exe/dist/node_modules/node-gyp/lib/util.js +0 -81
  175. package/artifacts/exe/dist/node_modules/node-gyp/macOS_Catalina_acid_test.sh +0 -21
  176. package/artifacts/exe/dist/node_modules/node-gyp/package.json +0 -52
  177. package/artifacts/exe/dist/node_modules/node-gyp/release-please-config.json +0 -40
  178. package/artifacts/exe/dist/node_modules/node-gyp/src/win_delay_load_hook.cc +0 -41
  179. package/artifacts/exe/dist/node_modules/nopt/LICENSE +0 -15
  180. package/artifacts/exe/dist/node_modules/nopt/bin/nopt.js +0 -29
  181. package/artifacts/exe/dist/node_modules/nopt/lib/debug.js +0 -5
  182. package/artifacts/exe/dist/node_modules/nopt/lib/nopt-lib.js +0 -514
  183. package/artifacts/exe/dist/node_modules/nopt/lib/nopt.js +0 -34
  184. package/artifacts/exe/dist/node_modules/nopt/lib/type-defs.js +0 -91
  185. package/artifacts/exe/dist/node_modules/nopt/package.json +0 -52
  186. package/artifacts/exe/dist/node_modules/picomatch/LICENSE +0 -21
  187. package/artifacts/exe/dist/node_modules/picomatch/index.js +0 -17
  188. package/artifacts/exe/dist/node_modules/picomatch/lib/constants.js +0 -184
  189. package/artifacts/exe/dist/node_modules/picomatch/lib/parse.js +0 -1416
  190. package/artifacts/exe/dist/node_modules/picomatch/lib/picomatch.js +0 -361
  191. package/artifacts/exe/dist/node_modules/picomatch/lib/scan.js +0 -391
  192. package/artifacts/exe/dist/node_modules/picomatch/lib/utils.js +0 -72
  193. package/artifacts/exe/dist/node_modules/picomatch/package.json +0 -83
  194. package/artifacts/exe/dist/node_modules/picomatch/posix.js +0 -3
  195. package/artifacts/exe/dist/node_modules/proc-log/LICENSE +0 -15
  196. package/artifacts/exe/dist/node_modules/proc-log/lib/index.js +0 -158
  197. package/artifacts/exe/dist/node_modules/proc-log/package.json +0 -46
  198. package/artifacts/exe/dist/node_modules/semver/LICENSE +0 -15
  199. package/artifacts/exe/dist/node_modules/semver/bin/semver.js +0 -195
  200. package/artifacts/exe/dist/node_modules/semver/classes/comparator.js +0 -143
  201. package/artifacts/exe/dist/node_modules/semver/classes/index.js +0 -7
  202. package/artifacts/exe/dist/node_modules/semver/classes/range.js +0 -577
  203. package/artifacts/exe/dist/node_modules/semver/classes/semver.js +0 -350
  204. package/artifacts/exe/dist/node_modules/semver/functions/clean.js +0 -8
  205. package/artifacts/exe/dist/node_modules/semver/functions/cmp.js +0 -54
  206. package/artifacts/exe/dist/node_modules/semver/functions/coerce.js +0 -62
  207. package/artifacts/exe/dist/node_modules/semver/functions/compare-build.js +0 -9
  208. package/artifacts/exe/dist/node_modules/semver/functions/compare-loose.js +0 -5
  209. package/artifacts/exe/dist/node_modules/semver/functions/compare.js +0 -7
  210. package/artifacts/exe/dist/node_modules/semver/functions/diff.js +0 -60
  211. package/artifacts/exe/dist/node_modules/semver/functions/eq.js +0 -5
  212. package/artifacts/exe/dist/node_modules/semver/functions/gt.js +0 -5
  213. package/artifacts/exe/dist/node_modules/semver/functions/gte.js +0 -5
  214. package/artifacts/exe/dist/node_modules/semver/functions/inc.js +0 -21
  215. package/artifacts/exe/dist/node_modules/semver/functions/lt.js +0 -5
  216. package/artifacts/exe/dist/node_modules/semver/functions/lte.js +0 -5
  217. package/artifacts/exe/dist/node_modules/semver/functions/major.js +0 -5
  218. package/artifacts/exe/dist/node_modules/semver/functions/minor.js +0 -5
  219. package/artifacts/exe/dist/node_modules/semver/functions/neq.js +0 -5
  220. package/artifacts/exe/dist/node_modules/semver/functions/parse.js +0 -18
  221. package/artifacts/exe/dist/node_modules/semver/functions/patch.js +0 -5
  222. package/artifacts/exe/dist/node_modules/semver/functions/prerelease.js +0 -8
  223. package/artifacts/exe/dist/node_modules/semver/functions/rcompare.js +0 -5
  224. package/artifacts/exe/dist/node_modules/semver/functions/rsort.js +0 -5
  225. package/artifacts/exe/dist/node_modules/semver/functions/satisfies.js +0 -12
  226. package/artifacts/exe/dist/node_modules/semver/functions/sort.js +0 -5
  227. package/artifacts/exe/dist/node_modules/semver/functions/truncate.js +0 -48
  228. package/artifacts/exe/dist/node_modules/semver/functions/valid.js +0 -8
  229. package/artifacts/exe/dist/node_modules/semver/index.js +0 -93
  230. package/artifacts/exe/dist/node_modules/semver/internal/constants.js +0 -37
  231. package/artifacts/exe/dist/node_modules/semver/internal/debug.js +0 -11
  232. package/artifacts/exe/dist/node_modules/semver/internal/identifiers.js +0 -29
  233. package/artifacts/exe/dist/node_modules/semver/internal/lrucache.js +0 -42
  234. package/artifacts/exe/dist/node_modules/semver/internal/parse-options.js +0 -17
  235. package/artifacts/exe/dist/node_modules/semver/internal/re.js +0 -223
  236. package/artifacts/exe/dist/node_modules/semver/package.json +0 -78
  237. package/artifacts/exe/dist/node_modules/semver/preload.js +0 -4
  238. package/artifacts/exe/dist/node_modules/semver/range.bnf +0 -17
  239. package/artifacts/exe/dist/node_modules/semver/ranges/gtr.js +0 -6
  240. package/artifacts/exe/dist/node_modules/semver/ranges/intersects.js +0 -9
  241. package/artifacts/exe/dist/node_modules/semver/ranges/ltr.js +0 -6
  242. package/artifacts/exe/dist/node_modules/semver/ranges/max-satisfying.js +0 -27
  243. package/artifacts/exe/dist/node_modules/semver/ranges/min-satisfying.js +0 -26
  244. package/artifacts/exe/dist/node_modules/semver/ranges/min-version.js +0 -63
  245. package/artifacts/exe/dist/node_modules/semver/ranges/outside.js +0 -82
  246. package/artifacts/exe/dist/node_modules/semver/ranges/simplify.js +0 -49
  247. package/artifacts/exe/dist/node_modules/semver/ranges/subset.js +0 -249
  248. package/artifacts/exe/dist/node_modules/semver/ranges/to-comparators.js +0 -10
  249. package/artifacts/exe/dist/node_modules/semver/ranges/valid.js +0 -13
  250. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/create.js +0 -82
  251. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/cwd-error.js +0 -18
  252. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/extract.js +0 -88
  253. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/get-write-flag.js +0 -32
  254. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/header.js +0 -348
  255. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/index.js +0 -64
  256. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/index.min.js +0 -4
  257. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/large-numbers.js +0 -99
  258. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/list.js +0 -153
  259. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/make-command.js +0 -52
  260. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/mkdir.js +0 -187
  261. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/mode-fix.js +0 -29
  262. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/normalize-unicode.js +0 -38
  263. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/normalize-windows-path.js +0 -12
  264. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/options.js +0 -66
  265. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/pack.js +0 -544
  266. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/package.json +0 -3
  267. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/parse.js +0 -655
  268. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/path-reservations.js +0 -170
  269. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/pax.js +0 -182
  270. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/process-umask.js +0 -7
  271. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/read-entry.js +0 -136
  272. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/replace.js +0 -227
  273. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/strip-absolute-path.js +0 -29
  274. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +0 -18
  275. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/symlink-error.js +0 -19
  276. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/types.js +0 -70
  277. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/unpack.js +0 -932
  278. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/update.js +0 -33
  279. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/warn-method.js +0 -31
  280. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/winchars.js +0 -14
  281. package/artifacts/exe/dist/node_modules/tar/dist/commonjs/write-entry.js +0 -698
  282. package/artifacts/exe/dist/node_modules/tar/dist/esm/create.js +0 -76
  283. package/artifacts/exe/dist/node_modules/tar/dist/esm/cwd-error.js +0 -14
  284. package/artifacts/exe/dist/node_modules/tar/dist/esm/extract.js +0 -49
  285. package/artifacts/exe/dist/node_modules/tar/dist/esm/get-write-flag.js +0 -26
  286. package/artifacts/exe/dist/node_modules/tar/dist/esm/header.js +0 -311
  287. package/artifacts/exe/dist/node_modules/tar/dist/esm/index.js +0 -20
  288. package/artifacts/exe/dist/node_modules/tar/dist/esm/index.min.js +0 -4
  289. package/artifacts/exe/dist/node_modules/tar/dist/esm/large-numbers.js +0 -94
  290. package/artifacts/exe/dist/node_modules/tar/dist/esm/list.js +0 -113
  291. package/artifacts/exe/dist/node_modules/tar/dist/esm/make-command.js +0 -48
  292. package/artifacts/exe/dist/node_modules/tar/dist/esm/mkdir.js +0 -179
  293. package/artifacts/exe/dist/node_modules/tar/dist/esm/mode-fix.js +0 -25
  294. package/artifacts/exe/dist/node_modules/tar/dist/esm/normalize-unicode.js +0 -34
  295. package/artifacts/exe/dist/node_modules/tar/dist/esm/normalize-windows-path.js +0 -9
  296. package/artifacts/exe/dist/node_modules/tar/dist/esm/options.js +0 -54
  297. package/artifacts/exe/dist/node_modules/tar/dist/esm/pack.js +0 -502
  298. package/artifacts/exe/dist/node_modules/tar/dist/esm/package.json +0 -3
  299. package/artifacts/exe/dist/node_modules/tar/dist/esm/parse.js +0 -651
  300. package/artifacts/exe/dist/node_modules/tar/dist/esm/path-reservations.js +0 -166
  301. package/artifacts/exe/dist/node_modules/tar/dist/esm/pax.js +0 -178
  302. package/artifacts/exe/dist/node_modules/tar/dist/esm/process-umask.js +0 -3
  303. package/artifacts/exe/dist/node_modules/tar/dist/esm/read-entry.js +0 -132
  304. package/artifacts/exe/dist/node_modules/tar/dist/esm/replace.js +0 -221
  305. package/artifacts/exe/dist/node_modules/tar/dist/esm/strip-absolute-path.js +0 -25
  306. package/artifacts/exe/dist/node_modules/tar/dist/esm/strip-trailing-slashes.js +0 -14
  307. package/artifacts/exe/dist/node_modules/tar/dist/esm/symlink-error.js +0 -15
  308. package/artifacts/exe/dist/node_modules/tar/dist/esm/types.js +0 -65
  309. package/artifacts/exe/dist/node_modules/tar/dist/esm/unpack.js +0 -891
  310. package/artifacts/exe/dist/node_modules/tar/dist/esm/update.js +0 -30
  311. package/artifacts/exe/dist/node_modules/tar/dist/esm/warn-method.js +0 -27
  312. package/artifacts/exe/dist/node_modules/tar/dist/esm/winchars.js +0 -9
  313. package/artifacts/exe/dist/node_modules/tar/dist/esm/write-entry.js +0 -656
  314. package/artifacts/exe/dist/node_modules/tar/package.json +0 -298
  315. package/artifacts/exe/dist/node_modules/tinyglobby/LICENSE +0 -21
  316. package/artifacts/exe/dist/node_modules/tinyglobby/dist/index.cjs +0 -335
  317. package/artifacts/exe/dist/node_modules/tinyglobby/dist/index.d.cts +0 -148
  318. package/artifacts/exe/dist/node_modules/tinyglobby/dist/index.d.mts +0 -148
  319. package/artifacts/exe/dist/node_modules/tinyglobby/dist/index.mjs +0 -307
  320. package/artifacts/exe/dist/node_modules/tinyglobby/package.json +0 -70
  321. package/artifacts/exe/dist/node_modules/undici/LICENSE +0 -21
  322. package/artifacts/exe/dist/node_modules/undici/index-fetch.js +0 -35
  323. package/artifacts/exe/dist/node_modules/undici/index.js +0 -169
  324. package/artifacts/exe/dist/node_modules/undici/lib/api/abort-signal.js +0 -57
  325. package/artifacts/exe/dist/node_modules/undici/lib/api/api-connect.js +0 -108
  326. package/artifacts/exe/dist/node_modules/undici/lib/api/api-pipeline.js +0 -251
  327. package/artifacts/exe/dist/node_modules/undici/lib/api/api-request.js +0 -214
  328. package/artifacts/exe/dist/node_modules/undici/lib/api/api-stream.js +0 -220
  329. package/artifacts/exe/dist/node_modules/undici/lib/api/api-upgrade.js +0 -108
  330. package/artifacts/exe/dist/node_modules/undici/lib/api/index.js +0 -7
  331. package/artifacts/exe/dist/node_modules/undici/lib/api/readable.js +0 -385
  332. package/artifacts/exe/dist/node_modules/undici/lib/api/util.js +0 -93
  333. package/artifacts/exe/dist/node_modules/undici/lib/core/connect.js +0 -240
  334. package/artifacts/exe/dist/node_modules/undici/lib/core/constants.js +0 -118
  335. package/artifacts/exe/dist/node_modules/undici/lib/core/diagnostics.js +0 -202
  336. package/artifacts/exe/dist/node_modules/undici/lib/core/errors.js +0 -425
  337. package/artifacts/exe/dist/node_modules/undici/lib/core/request.js +0 -416
  338. package/artifacts/exe/dist/node_modules/undici/lib/core/symbols.js +0 -67
  339. package/artifacts/exe/dist/node_modules/undici/lib/core/tree.js +0 -152
  340. package/artifacts/exe/dist/node_modules/undici/lib/core/util.js +0 -719
  341. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/agent.js +0 -129
  342. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/balanced-pool.js +0 -209
  343. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/client-h1.js +0 -1496
  344. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/client-h2.js +0 -744
  345. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/client.js +0 -623
  346. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/dispatcher-base.js +0 -199
  347. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/dispatcher.js +0 -65
  348. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +0 -160
  349. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/fixed-queue.js +0 -117
  350. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/pool-base.js +0 -194
  351. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/pool-stats.js +0 -34
  352. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/pool.js +0 -107
  353. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/proxy-agent.js +0 -274
  354. package/artifacts/exe/dist/node_modules/undici/lib/dispatcher/retry-agent.js +0 -35
  355. package/artifacts/exe/dist/node_modules/undici/lib/global.js +0 -32
  356. package/artifacts/exe/dist/node_modules/undici/lib/handler/decorator-handler.js +0 -44
  357. package/artifacts/exe/dist/node_modules/undici/lib/handler/redirect-handler.js +0 -232
  358. package/artifacts/exe/dist/node_modules/undici/lib/handler/retry-handler.js +0 -408
  359. package/artifacts/exe/dist/node_modules/undici/lib/interceptor/dns.js +0 -375
  360. package/artifacts/exe/dist/node_modules/undici/lib/interceptor/dump.js +0 -123
  361. package/artifacts/exe/dist/node_modules/undici/lib/interceptor/redirect-interceptor.js +0 -21
  362. package/artifacts/exe/dist/node_modules/undici/lib/interceptor/redirect.js +0 -24
  363. package/artifacts/exe/dist/node_modules/undici/lib/interceptor/response-error.js +0 -86
  364. package/artifacts/exe/dist/node_modules/undici/lib/interceptor/retry.js +0 -19
  365. package/artifacts/exe/dist/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  366. package/artifacts/exe/dist/node_modules/undici/lib/llhttp/constants.js +0 -278
  367. package/artifacts/exe/dist/node_modules/undici/lib/llhttp/llhttp-wasm.js +0 -5
  368. package/artifacts/exe/dist/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +0 -5
  369. package/artifacts/exe/dist/node_modules/undici/lib/llhttp/utils.js +0 -15
  370. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-agent.js +0 -160
  371. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-client.js +0 -59
  372. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-errors.js +0 -28
  373. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-interceptor.js +0 -207
  374. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-pool.js +0 -59
  375. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-symbols.js +0 -23
  376. package/artifacts/exe/dist/node_modules/undici/lib/mock/mock-utils.js +0 -367
  377. package/artifacts/exe/dist/node_modules/undici/lib/mock/pending-interceptors-formatter.js +0 -43
  378. package/artifacts/exe/dist/node_modules/undici/lib/mock/pluralizer.js +0 -29
  379. package/artifacts/exe/dist/node_modules/undici/lib/util/timers.js +0 -423
  380. package/artifacts/exe/dist/node_modules/undici/lib/web/cache/cache.js +0 -859
  381. package/artifacts/exe/dist/node_modules/undici/lib/web/cache/cachestorage.js +0 -152
  382. package/artifacts/exe/dist/node_modules/undici/lib/web/cache/symbols.js +0 -5
  383. package/artifacts/exe/dist/node_modules/undici/lib/web/cache/util.js +0 -45
  384. package/artifacts/exe/dist/node_modules/undici/lib/web/cookies/constants.js +0 -12
  385. package/artifacts/exe/dist/node_modules/undici/lib/web/cookies/index.js +0 -184
  386. package/artifacts/exe/dist/node_modules/undici/lib/web/cookies/parse.js +0 -310
  387. package/artifacts/exe/dist/node_modules/undici/lib/web/cookies/util.js +0 -352
  388. package/artifacts/exe/dist/node_modules/undici/lib/web/eventsource/eventsource-stream.js +0 -398
  389. package/artifacts/exe/dist/node_modules/undici/lib/web/eventsource/eventsource.js +0 -480
  390. package/artifacts/exe/dist/node_modules/undici/lib/web/eventsource/util.js +0 -37
  391. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/LICENSE +0 -21
  392. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/body.js +0 -529
  393. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/constants.js +0 -124
  394. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/data-url.js +0 -744
  395. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +0 -46
  396. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/file.js +0 -126
  397. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/formdata-parser.js +0 -474
  398. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/formdata.js +0 -252
  399. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/global.js +0 -40
  400. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/headers.js +0 -687
  401. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/index.js +0 -2272
  402. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/request.js +0 -1037
  403. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/response.js +0 -610
  404. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/symbols.js +0 -9
  405. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/util.js +0 -1632
  406. package/artifacts/exe/dist/node_modules/undici/lib/web/fetch/webidl.js +0 -695
  407. package/artifacts/exe/dist/node_modules/undici/lib/web/fileapi/encoding.js +0 -290
  408. package/artifacts/exe/dist/node_modules/undici/lib/web/fileapi/filereader.js +0 -344
  409. package/artifacts/exe/dist/node_modules/undici/lib/web/fileapi/progressevent.js +0 -78
  410. package/artifacts/exe/dist/node_modules/undici/lib/web/fileapi/symbols.js +0 -10
  411. package/artifacts/exe/dist/node_modules/undici/lib/web/fileapi/util.js +0 -391
  412. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/connection.js +0 -371
  413. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/constants.js +0 -66
  414. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/events.js +0 -329
  415. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/frame.js +0 -96
  416. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/permessage-deflate.js +0 -100
  417. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/receiver.js +0 -513
  418. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/sender.js +0 -104
  419. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/symbols.js +0 -12
  420. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/util.js +0 -322
  421. package/artifacts/exe/dist/node_modules/undici/lib/web/websocket/websocket.js +0 -595
  422. package/artifacts/exe/dist/node_modules/undici/package.json +0 -160
  423. package/artifacts/exe/dist/node_modules/undici/scripts/strip-comments.js +0 -8
  424. package/artifacts/exe/dist/node_modules/v8-compile-cache/LICENSE +0 -21
  425. package/artifacts/exe/dist/node_modules/v8-compile-cache/package.json +0 -34
  426. package/artifacts/exe/dist/node_modules/v8-compile-cache/v8-compile-cache.js +0 -373
  427. package/artifacts/exe/dist/node_modules/which/LICENSE +0 -15
  428. package/artifacts/exe/dist/node_modules/which/bin/which.js +0 -52
  429. package/artifacts/exe/dist/node_modules/which/lib/index.js +0 -111
  430. package/artifacts/exe/dist/node_modules/which/package.json +0 -52
  431. package/artifacts/exe/dist/node_modules/yallist/dist/commonjs/index.js +0 -384
  432. package/artifacts/exe/dist/node_modules/yallist/dist/commonjs/package.json +0 -3
  433. package/artifacts/exe/dist/node_modules/yallist/dist/esm/index.js +0 -379
  434. package/artifacts/exe/dist/node_modules/yallist/dist/esm/package.json +0 -3
  435. package/artifacts/exe/dist/node_modules/yallist/package.json +0 -68
  436. package/artifacts/exe/dist/pnpm.mjs +0 -324459
  437. package/artifacts/exe/dist/pnpmrc +0 -2
  438. package/artifacts/exe/dist/templates/completion.bash +0 -31
  439. package/artifacts/exe/dist/templates/completion.fish +0 -22
  440. package/artifacts/exe/dist/templates/completion.ps1 +0 -193
  441. package/artifacts/exe/dist/templates/completion.zsh +0 -27
  442. package/artifacts/exe/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  443. package/artifacts/exe/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  444. package/artifacts/exe/dist/worker.js +0 -12149
@@ -1,1496 +0,0 @@
1
- 'use strict'
2
-
3
- /* global WebAssembly */
4
-
5
- const assert = require('node:assert')
6
- const util = require('../core/util.js')
7
- const { channels } = require('../core/diagnostics.js')
8
- const timers = require('../util/timers.js')
9
- const {
10
- RequestContentLengthMismatchError,
11
- ResponseContentLengthMismatchError,
12
- RequestAbortedError,
13
- InvalidArgumentError,
14
- HeadersTimeoutError,
15
- HeadersOverflowError,
16
- SocketError,
17
- InformationalError,
18
- BodyTimeoutError,
19
- HTTPParserError,
20
- ResponseExceededMaxSizeError
21
- } = require('../core/errors.js')
22
- const {
23
- kUrl,
24
- kReset,
25
- kClient,
26
- kParser,
27
- kBlocking,
28
- kRunning,
29
- kPending,
30
- kSize,
31
- kWriting,
32
- kQueue,
33
- kNoRef,
34
- kKeepAliveDefaultTimeout,
35
- kHostHeader,
36
- kPendingIdx,
37
- kRunningIdx,
38
- kError,
39
- kPipelining,
40
- kSocket,
41
- kKeepAliveTimeoutValue,
42
- kMaxHeadersSize,
43
- kKeepAliveMaxTimeout,
44
- kKeepAliveTimeoutThreshold,
45
- kHeadersTimeout,
46
- kBodyTimeout,
47
- kStrictContentLength,
48
- kMaxRequests,
49
- kCounter,
50
- kMaxResponseSize,
51
- kOnError,
52
- kResume,
53
- kHTTPContext
54
- } = require('../core/symbols.js')
55
-
56
- const constants = require('../llhttp/constants.js')
57
- const EMPTY_BUF = Buffer.alloc(0)
58
- const FastBuffer = Buffer[Symbol.species]
59
- const addListener = util.addListener
60
- const removeAllListeners = util.removeAllListeners
61
- const kIdleSocketValidation = Symbol('kIdleSocketValidation')
62
- const kIdleSocketValidationTimeout = Symbol('kIdleSocketValidationTimeout')
63
- const kSocketUsed = Symbol('kSocketUsed')
64
-
65
- let extractBody
66
-
67
- async function lazyllhttp () {
68
- const llhttpWasmData = process.env.JEST_WORKER_ID ? require('../llhttp/llhttp-wasm.js') : undefined
69
-
70
- let mod
71
- try {
72
- mod = await WebAssembly.compile(require('../llhttp/llhttp_simd-wasm.js'))
73
- } catch (e) {
74
- /* istanbul ignore next */
75
-
76
- // We could check if the error was caused by the simd option not
77
- // being enabled, but the occurring of this other error
78
- // * https://github.com/emscripten-core/emscripten/issues/11495
79
- // got me to remove that check to avoid breaking Node 12.
80
- mod = await WebAssembly.compile(llhttpWasmData || require('../llhttp/llhttp-wasm.js'))
81
- }
82
-
83
- return await WebAssembly.instantiate(mod, {
84
- env: {
85
- /* eslint-disable camelcase */
86
-
87
- wasm_on_url: (p, at, len) => {
88
- /* istanbul ignore next */
89
- return 0
90
- },
91
- wasm_on_status: (p, at, len) => {
92
- assert(currentParser.ptr === p)
93
- const start = at - currentBufferPtr + currentBufferRef.byteOffset
94
- return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
95
- },
96
- wasm_on_message_begin: (p) => {
97
- assert(currentParser.ptr === p)
98
- return currentParser.onMessageBegin() || 0
99
- },
100
- wasm_on_header_field: (p, at, len) => {
101
- assert(currentParser.ptr === p)
102
- const start = at - currentBufferPtr + currentBufferRef.byteOffset
103
- return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
104
- },
105
- wasm_on_header_value: (p, at, len) => {
106
- assert(currentParser.ptr === p)
107
- const start = at - currentBufferPtr + currentBufferRef.byteOffset
108
- return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
109
- },
110
- wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
111
- assert(currentParser.ptr === p)
112
- return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0
113
- },
114
- wasm_on_body: (p, at, len) => {
115
- assert(currentParser.ptr === p)
116
- const start = at - currentBufferPtr + currentBufferRef.byteOffset
117
- return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
118
- },
119
- wasm_on_message_complete: (p) => {
120
- assert(currentParser.ptr === p)
121
- return currentParser.onMessageComplete() || 0
122
- }
123
-
124
- /* eslint-enable camelcase */
125
- }
126
- })
127
- }
128
-
129
- let llhttpInstance = null
130
- let llhttpPromise = lazyllhttp()
131
- llhttpPromise.catch()
132
-
133
- let currentParser = null
134
- let currentBufferRef = null
135
- let currentBufferSize = 0
136
- let currentBufferPtr = null
137
-
138
- const USE_NATIVE_TIMER = 0
139
- const USE_FAST_TIMER = 1
140
-
141
- // Use fast timers for headers and body to take eventual event loop
142
- // latency into account.
143
- const TIMEOUT_HEADERS = 2 | USE_FAST_TIMER
144
- const TIMEOUT_BODY = 4 | USE_FAST_TIMER
145
-
146
- // Use native timers to ignore event loop latency for keep-alive
147
- // handling.
148
- const TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER
149
-
150
- class Parser {
151
- constructor (client, socket, { exports }) {
152
- assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)
153
-
154
- this.llhttp = exports
155
- this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)
156
- this.client = client
157
- this.socket = socket
158
- this.timeout = null
159
- this.timeoutValue = null
160
- this.timeoutType = null
161
- this.statusCode = null
162
- this.statusText = ''
163
- this.upgrade = false
164
- this.headers = []
165
- this.headersSize = 0
166
- this.headersMaxSize = client[kMaxHeadersSize]
167
- this.shouldKeepAlive = false
168
- this.paused = false
169
- this.resume = this.resume.bind(this)
170
-
171
- this.bytesRead = 0
172
-
173
- this.keepAlive = ''
174
- this.contentLength = ''
175
- this.connection = ''
176
- this.maxResponseSize = client[kMaxResponseSize]
177
- }
178
-
179
- setTimeout (delay, type) {
180
- // If the existing timer and the new timer are of different timer type
181
- // (fast or native) or have different delay, we need to clear the existing
182
- // timer and set a new one.
183
- if (
184
- delay !== this.timeoutValue ||
185
- (type & USE_FAST_TIMER) ^ (this.timeoutType & USE_FAST_TIMER)
186
- ) {
187
- // If a timeout is already set, clear it with clearTimeout of the fast
188
- // timer implementation, as it can clear fast and native timers.
189
- if (this.timeout) {
190
- timers.clearTimeout(this.timeout)
191
- this.timeout = null
192
- }
193
-
194
- if (delay) {
195
- if (type & USE_FAST_TIMER) {
196
- this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this))
197
- } else {
198
- this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this))
199
- this.timeout.unref()
200
- }
201
- }
202
-
203
- this.timeoutValue = delay
204
- } else if (this.timeout) {
205
- // istanbul ignore else: only for jest
206
- if (this.timeout.refresh) {
207
- this.timeout.refresh()
208
- }
209
- }
210
-
211
- this.timeoutType = type
212
- }
213
-
214
- resume () {
215
- if (this.socket.destroyed || !this.paused) {
216
- return
217
- }
218
-
219
- assert(this.ptr != null)
220
- assert(currentParser == null)
221
-
222
- this.llhttp.llhttp_resume(this.ptr)
223
-
224
- assert(this.timeoutType === TIMEOUT_BODY)
225
- if (this.timeout) {
226
- // istanbul ignore else: only for jest
227
- if (this.timeout.refresh) {
228
- this.timeout.refresh()
229
- }
230
- }
231
-
232
- this.paused = false
233
- this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.
234
- this.readMore()
235
- }
236
-
237
- readMore () {
238
- while (!this.paused && this.ptr) {
239
- const chunk = this.socket.read()
240
- if (chunk === null) {
241
- break
242
- }
243
- this.execute(chunk)
244
- }
245
- }
246
-
247
- execute (data) {
248
- assert(this.ptr != null)
249
- assert(currentParser == null)
250
- assert(!this.paused)
251
-
252
- const { socket, llhttp } = this
253
-
254
- if (data.length > currentBufferSize) {
255
- if (currentBufferPtr) {
256
- llhttp.free(currentBufferPtr)
257
- }
258
- currentBufferSize = Math.ceil(data.length / 4096) * 4096
259
- currentBufferPtr = llhttp.malloc(currentBufferSize)
260
- }
261
-
262
- new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)
263
-
264
- // Call `execute` on the wasm parser.
265
- // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,
266
- // and finally the length of bytes to parse.
267
- // The return value is an error code or `constants.ERROR.OK`.
268
- try {
269
- let ret
270
-
271
- try {
272
- currentBufferRef = data
273
- currentParser = this
274
- ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)
275
- /* eslint-disable-next-line no-useless-catch */
276
- } catch (err) {
277
- /* istanbul ignore next: difficult to make a test case for */
278
- throw err
279
- } finally {
280
- currentParser = null
281
- currentBufferRef = null
282
- }
283
-
284
- const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr
285
-
286
- if (ret !== constants.ERROR.OK) {
287
- const body = data.subarray(offset)
288
-
289
- if (ret === constants.ERROR.PAUSED_UPGRADE) {
290
- this.onUpgrade(body)
291
- } else if (ret === constants.ERROR.PAUSED) {
292
- this.paused = true
293
- socket.unshift(body)
294
- } else {
295
- throw this.createError(ret, body)
296
- }
297
- }
298
- } catch (err) {
299
- util.destroy(socket, err)
300
- }
301
- }
302
-
303
- finish () {
304
- assert(currentParser === null)
305
- assert(this.ptr != null)
306
- assert(!this.paused)
307
-
308
- const { llhttp } = this
309
-
310
- let ret
311
-
312
- try {
313
- currentParser = this
314
- ret = llhttp.llhttp_finish(this.ptr)
315
- } finally {
316
- currentParser = null
317
- }
318
-
319
- if (ret === constants.ERROR.OK) {
320
- return null
321
- }
322
-
323
- if (ret === constants.ERROR.PAUSED || ret === constants.ERROR.PAUSED_UPGRADE) {
324
- this.paused = true
325
- return null
326
- }
327
-
328
- return this.createError(ret, EMPTY_BUF)
329
- }
330
-
331
- createError (ret, data) {
332
- const { llhttp, contentLength, bytesRead } = this
333
-
334
- if (contentLength && bytesRead !== parseInt(contentLength, 10)) {
335
- return new ResponseContentLengthMismatchError()
336
- }
337
-
338
- const ptr = llhttp.llhttp_get_error_reason(this.ptr)
339
- let message = ''
340
- if (ptr) {
341
- const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)
342
- message =
343
- 'Response does not match the HTTP/1.1 protocol (' +
344
- Buffer.from(llhttp.memory.buffer, ptr, len).toString() +
345
- ')'
346
- }
347
-
348
- return new HTTPParserError(message, constants.ERROR[ret], data)
349
- }
350
-
351
- destroy () {
352
- assert(this.ptr != null)
353
- assert(currentParser == null)
354
-
355
- this.llhttp.llhttp_free(this.ptr)
356
- this.ptr = null
357
-
358
- this.timeout && timers.clearTimeout(this.timeout)
359
- this.timeout = null
360
- this.timeoutValue = null
361
- this.timeoutType = null
362
-
363
- this.paused = false
364
- }
365
-
366
- onStatus (buf) {
367
- this.statusText = buf.toString()
368
- }
369
-
370
- onMessageBegin () {
371
- const { socket, client } = this
372
-
373
- /* istanbul ignore next: difficult to make a test case for */
374
- if (socket.destroyed) {
375
- return -1
376
- }
377
-
378
- if (client[kRunning] === 0) {
379
- util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))
380
- return -1
381
- }
382
-
383
- const request = client[kQueue][client[kRunningIdx]]
384
- if (!request) {
385
- return -1
386
- }
387
- request.onResponseStarted()
388
- }
389
-
390
- onHeaderField (buf) {
391
- const len = this.headers.length
392
-
393
- if ((len & 1) === 0) {
394
- this.headers.push(buf)
395
- } else {
396
- this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])
397
- }
398
-
399
- this.trackHeader(buf.length)
400
- }
401
-
402
- onHeaderValue (buf) {
403
- let len = this.headers.length
404
-
405
- if ((len & 1) === 1) {
406
- this.headers.push(buf)
407
- len += 1
408
- } else {
409
- this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])
410
- }
411
-
412
- const key = this.headers[len - 2]
413
- if (key.length === 10) {
414
- const headerName = util.bufferToLowerCasedHeaderName(key)
415
- if (headerName === 'keep-alive') {
416
- this.keepAlive += buf.toString()
417
- } else if (headerName === 'connection') {
418
- this.connection += buf.toString()
419
- }
420
- } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') {
421
- this.contentLength += buf.toString()
422
- }
423
-
424
- this.trackHeader(buf.length)
425
- }
426
-
427
- trackHeader (len) {
428
- this.headersSize += len
429
- if (this.headersSize >= this.headersMaxSize) {
430
- util.destroy(this.socket, new HeadersOverflowError())
431
- }
432
- }
433
-
434
- onUpgrade (head) {
435
- const { upgrade, client, socket, headers, statusCode } = this
436
-
437
- assert(upgrade)
438
- assert(client[kSocket] === socket)
439
- assert(!socket.destroyed)
440
- assert(!this.paused)
441
- assert((headers.length & 1) === 0)
442
-
443
- const request = client[kQueue][client[kRunningIdx]]
444
- assert(request)
445
- assert(request.upgrade || request.method === 'CONNECT')
446
-
447
- this.statusCode = null
448
- this.statusText = ''
449
- this.shouldKeepAlive = null
450
-
451
- this.headers = []
452
- this.headersSize = 0
453
-
454
- socket.unshift(head)
455
-
456
- socket[kParser].destroy()
457
- socket[kParser] = null
458
-
459
- socket[kClient] = null
460
- socket[kError] = null
461
-
462
- removeAllListeners(socket)
463
-
464
- client[kSocket] = null
465
- client[kHTTPContext] = null // TODO (fix): This is hacky...
466
- client[kQueue][client[kRunningIdx]++] = null
467
- client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))
468
-
469
- try {
470
- request.onUpgrade(statusCode, headers, socket)
471
- } catch (err) {
472
- util.destroy(socket, err)
473
- }
474
-
475
- client[kResume]()
476
- }
477
-
478
- onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {
479
- const { client, socket, headers, statusText } = this
480
-
481
- /* istanbul ignore next: difficult to make a test case for */
482
- if (socket.destroyed) {
483
- return -1
484
- }
485
-
486
- if (client[kRunning] === 0) {
487
- util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))
488
- return -1
489
- }
490
-
491
- const request = client[kQueue][client[kRunningIdx]]
492
-
493
- /* istanbul ignore next: difficult to make a test case for */
494
- if (!request) {
495
- return -1
496
- }
497
-
498
- assert(!this.upgrade)
499
- assert(this.statusCode < 200)
500
-
501
- if (statusCode === 100) {
502
- util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))
503
- return -1
504
- }
505
-
506
- /* this can only happen if server is misbehaving */
507
- if (upgrade && !request.upgrade) {
508
- util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))
509
- return -1
510
- }
511
-
512
- assert(this.timeoutType === TIMEOUT_HEADERS)
513
-
514
- this.statusCode = statusCode
515
- this.shouldKeepAlive = (
516
- shouldKeepAlive ||
517
- // Override llhttp value which does not allow keepAlive for HEAD.
518
- (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')
519
- )
520
-
521
- if (this.statusCode >= 200) {
522
- const bodyTimeout = request.bodyTimeout != null
523
- ? request.bodyTimeout
524
- : client[kBodyTimeout]
525
- this.setTimeout(bodyTimeout, TIMEOUT_BODY)
526
- } else if (this.timeout) {
527
- // istanbul ignore else: only for jest
528
- if (this.timeout.refresh) {
529
- this.timeout.refresh()
530
- }
531
- }
532
-
533
- if (request.method === 'CONNECT') {
534
- assert(client[kRunning] === 1)
535
- this.upgrade = true
536
- return 2
537
- }
538
-
539
- if (upgrade) {
540
- assert(client[kRunning] === 1)
541
- this.upgrade = true
542
- return 2
543
- }
544
-
545
- assert((this.headers.length & 1) === 0)
546
- this.headers = []
547
- this.headersSize = 0
548
-
549
- if (this.shouldKeepAlive && client[kPipelining]) {
550
- const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null
551
-
552
- if (keepAliveTimeout != null) {
553
- const timeout = Math.min(
554
- keepAliveTimeout - client[kKeepAliveTimeoutThreshold],
555
- client[kKeepAliveMaxTimeout]
556
- )
557
- if (timeout <= 0) {
558
- socket[kReset] = true
559
- } else {
560
- client[kKeepAliveTimeoutValue] = timeout
561
- }
562
- } else {
563
- client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]
564
- }
565
- } else {
566
- // Stop more requests from being dispatched.
567
- socket[kReset] = true
568
- }
569
-
570
- const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false
571
-
572
- if (request.aborted) {
573
- return -1
574
- }
575
-
576
- if (request.method === 'HEAD') {
577
- return 1
578
- }
579
-
580
- if (statusCode < 200) {
581
- return 1
582
- }
583
-
584
- if (socket[kBlocking]) {
585
- socket[kBlocking] = false
586
- client[kResume]()
587
- }
588
-
589
- return pause ? constants.ERROR.PAUSED : 0
590
- }
591
-
592
- onBody (buf) {
593
- const { client, socket, statusCode, maxResponseSize } = this
594
-
595
- if (socket.destroyed) {
596
- return -1
597
- }
598
-
599
- const request = client[kQueue][client[kRunningIdx]]
600
- assert(request)
601
-
602
- assert(this.timeoutType === TIMEOUT_BODY)
603
- if (this.timeout) {
604
- // istanbul ignore else: only for jest
605
- if (this.timeout.refresh) {
606
- this.timeout.refresh()
607
- }
608
- }
609
-
610
- assert(statusCode >= 200)
611
-
612
- if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {
613
- util.destroy(socket, new ResponseExceededMaxSizeError())
614
- return -1
615
- }
616
-
617
- this.bytesRead += buf.length
618
-
619
- if (request.onData(buf) === false) {
620
- return constants.ERROR.PAUSED
621
- }
622
- }
623
-
624
- onMessageComplete () {
625
- const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this
626
-
627
- if (socket.destroyed && (!statusCode || shouldKeepAlive)) {
628
- return -1
629
- }
630
-
631
- if (upgrade) {
632
- return
633
- }
634
-
635
- assert(statusCode >= 100)
636
- assert((this.headers.length & 1) === 0)
637
-
638
- const request = client[kQueue][client[kRunningIdx]]
639
- assert(request)
640
-
641
- this.statusCode = null
642
- this.statusText = ''
643
- this.bytesRead = 0
644
- this.contentLength = ''
645
- this.keepAlive = ''
646
- this.connection = ''
647
-
648
- this.headers = []
649
- this.headersSize = 0
650
-
651
- if (statusCode < 200) {
652
- return
653
- }
654
-
655
- /* istanbul ignore next: should be handled by llhttp? */
656
- if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {
657
- util.destroy(socket, new ResponseContentLengthMismatchError())
658
- return -1
659
- }
660
-
661
- request.onComplete(headers)
662
-
663
- client[kQueue][client[kRunningIdx]++] = null
664
- socket[kSocketUsed] = true
665
-
666
- if (socket[kWriting]) {
667
- assert(client[kRunning] === 0)
668
- // Response completed before request.
669
- util.destroy(socket, new InformationalError('reset'))
670
- return constants.ERROR.PAUSED
671
- } else if (!shouldKeepAlive) {
672
- util.destroy(socket, new InformationalError('reset'))
673
- return constants.ERROR.PAUSED
674
- } else if (socket[kReset] && client[kRunning] === 0) {
675
- // Destroy socket once all requests have completed.
676
- // The request at the tail of the pipeline is the one
677
- // that requested reset and no further requests should
678
- // have been queued since then.
679
- util.destroy(socket, new InformationalError('reset'))
680
- return constants.ERROR.PAUSED
681
- } else if (client[kPipelining] == null || client[kPipelining] === 1) {
682
- // We must wait a full event loop cycle to reuse this socket to make sure
683
- // that non-spec compliant servers are not closing the connection even if they
684
- // said they won't.
685
- setImmediate(() => client[kResume]())
686
- } else {
687
- client[kResume]()
688
- }
689
- }
690
- }
691
-
692
- function onParserTimeout (parser) {
693
- const { socket, timeoutType, client, paused } = parser.deref()
694
-
695
- /* istanbul ignore else */
696
- if (timeoutType === TIMEOUT_HEADERS) {
697
- if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {
698
- assert(!paused, 'cannot be paused while waiting for headers')
699
- util.destroy(socket, new HeadersTimeoutError())
700
- }
701
- } else if (timeoutType === TIMEOUT_BODY) {
702
- if (!paused) {
703
- util.destroy(socket, new BodyTimeoutError())
704
- }
705
- } else if (timeoutType === TIMEOUT_KEEP_ALIVE) {
706
- assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])
707
- util.destroy(socket, new InformationalError('socket idle timeout'))
708
- }
709
- }
710
-
711
- async function connectH1 (client, socket) {
712
- client[kSocket] = socket
713
-
714
- if (!llhttpInstance) {
715
- llhttpInstance = await llhttpPromise
716
- llhttpPromise = null
717
- }
718
-
719
- socket[kNoRef] = false
720
- socket[kWriting] = false
721
- socket[kReset] = false
722
- socket[kBlocking] = false
723
- socket[kIdleSocketValidation] = 0
724
- socket[kIdleSocketValidationTimeout] = null
725
- socket[kSocketUsed] = false
726
- socket[kParser] = new Parser(client, socket, llhttpInstance)
727
-
728
- addListener(socket, 'error', function (err) {
729
- assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
730
-
731
- const parser = this[kParser]
732
-
733
- // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded
734
- // to the user.
735
- if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {
736
- const parserErr = parser.finish()
737
- if (parserErr) {
738
- this[kError] = parserErr
739
- this[kClient][kOnError](parserErr)
740
- }
741
- return
742
- }
743
-
744
- this[kError] = err
745
-
746
- this[kClient][kOnError](err)
747
- })
748
- addListener(socket, 'readable', function () {
749
- const parser = this[kParser]
750
-
751
- if (parser) {
752
- parser.readMore()
753
- }
754
- })
755
- addListener(socket, 'end', function () {
756
- const parser = this[kParser]
757
-
758
- if (parser.statusCode && !parser.shouldKeepAlive) {
759
- const parserErr = parser.finish()
760
- if (parserErr) {
761
- util.destroy(this, parserErr)
762
- }
763
- return
764
- }
765
-
766
- util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))
767
- })
768
- addListener(socket, 'close', function () {
769
- const client = this[kClient]
770
- const parser = this[kParser]
771
-
772
- clearIdleSocketValidation(this)
773
-
774
- if (parser) {
775
- if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
776
- this[kError] = parser.finish() || this[kError]
777
- }
778
-
779
- this[kParser].destroy()
780
- this[kParser] = null
781
- }
782
-
783
- const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))
784
-
785
- client[kSocket] = null
786
- client[kHTTPContext] = null // TODO (fix): This is hacky...
787
-
788
- if (client.destroyed) {
789
- assert(client[kPending] === 0)
790
-
791
- // Fail entire queue.
792
- const requests = client[kQueue].splice(client[kRunningIdx])
793
- for (let i = 0; i < requests.length; i++) {
794
- const request = requests[i]
795
- util.errorRequest(client, request, err)
796
- }
797
- } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {
798
- // Fail head of pipeline.
799
- const request = client[kQueue][client[kRunningIdx]]
800
- client[kQueue][client[kRunningIdx]++] = null
801
-
802
- util.errorRequest(client, request, err)
803
- }
804
-
805
- client[kPendingIdx] = client[kRunningIdx]
806
-
807
- assert(client[kRunning] === 0)
808
-
809
- client.emit('disconnect', client[kUrl], [client], err)
810
-
811
- client[kResume]()
812
- })
813
-
814
- let closed = false
815
- socket.on('close', () => {
816
- closed = true
817
- })
818
-
819
- return {
820
- version: 'h1',
821
- defaultPipelining: 1,
822
- write (...args) {
823
- return writeH1(client, ...args)
824
- },
825
- resume () {
826
- resumeH1(client)
827
- },
828
- destroy (err, callback) {
829
- if (closed) {
830
- queueMicrotask(callback)
831
- } else {
832
- socket.destroy(err).on('close', callback)
833
- }
834
- },
835
- get destroyed () {
836
- return socket.destroyed
837
- },
838
- busy (request) {
839
- if (socket[kWriting] || socket[kReset] || socket[kBlocking] || socket[kIdleSocketValidation] === 1) {
840
- return true
841
- }
842
-
843
- if (request) {
844
- if (client[kRunning] > 0 && !request.idempotent) {
845
- // Non-idempotent request cannot be retried.
846
- // Ensure that no other requests are inflight and
847
- // could cause failure.
848
- return true
849
- }
850
-
851
- if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {
852
- // Don't dispatch an upgrade until all preceding requests have completed.
853
- // A misbehaving server might upgrade the connection before all pipelined
854
- // request has completed.
855
- return true
856
- }
857
-
858
- if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&
859
- (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) {
860
- // Request with stream or iterator body can error while other requests
861
- // are inflight and indirectly error those as well.
862
- // Ensure this doesn't happen by waiting for inflight
863
- // to complete before dispatching.
864
-
865
- // Request with stream or iterator body cannot be retried.
866
- // Ensure that no other requests are inflight and
867
- // could cause failure.
868
- return true
869
- }
870
- }
871
-
872
- return false
873
- }
874
- }
875
- }
876
-
877
- function clearIdleSocketValidation (socket) {
878
- if (socket[kIdleSocketValidationTimeout]) {
879
- clearTimeout(socket[kIdleSocketValidationTimeout])
880
- socket[kIdleSocketValidationTimeout] = null
881
- }
882
-
883
- socket[kIdleSocketValidation] = 0
884
- }
885
-
886
- function scheduleIdleSocketValidation (client, socket) {
887
- socket[kIdleSocketValidation] = 1
888
- socket[kIdleSocketValidationTimeout] = setTimeout(() => {
889
- socket[kIdleSocketValidationTimeout] = null
890
- socket[kIdleSocketValidation] = 2
891
-
892
- if (client[kSocket] === socket && !socket.destroyed) {
893
- client[kResume]()
894
- }
895
- }, 0)
896
- socket[kIdleSocketValidationTimeout].unref?.()
897
- }
898
-
899
- /**
900
- * @param {import('./client.js')} client
901
- */
902
- function resumeH1 (client) {
903
- const socket = client[kSocket]
904
-
905
- if (socket && !socket.destroyed) {
906
- if (client[kSize] === 0) {
907
- if (!socket[kNoRef] && socket.unref) {
908
- socket.unref()
909
- socket[kNoRef] = true
910
- }
911
- } else if (socket[kNoRef] && socket.ref) {
912
- socket.ref()
913
- socket[kNoRef] = false
914
- }
915
-
916
- if (client[kRunning] === 0 && client[kPending] > 0 && socket[kSocketUsed]) {
917
- if (socket[kIdleSocketValidation] === 0) {
918
- scheduleIdleSocketValidation(client, socket)
919
- socket[kParser].readMore()
920
- if (socket.destroyed) {
921
- return
922
- }
923
- return
924
- }
925
-
926
- if (socket[kIdleSocketValidation] === 1) {
927
- socket[kParser].readMore()
928
- if (socket.destroyed) {
929
- return
930
- }
931
- return
932
- }
933
- }
934
-
935
- if (client[kRunning] === 0) {
936
- socket[kParser].readMore()
937
- if (socket.destroyed) {
938
- return
939
- }
940
- }
941
-
942
- if (client[kSize] === 0) {
943
- if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) {
944
- socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE)
945
- }
946
- } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
947
- if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
948
- const request = client[kQueue][client[kRunningIdx]]
949
- const headersTimeout = request.headersTimeout != null
950
- ? request.headersTimeout
951
- : client[kHeadersTimeout]
952
- socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)
953
- }
954
- }
955
- }
956
- }
957
-
958
- // https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2
959
- function shouldSendContentLength (method) {
960
- return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'
961
- }
962
-
963
- function writeH1 (client, request) {
964
- const { method, path, host, upgrade, blocking, reset } = request
965
-
966
- let { body, headers, contentLength } = request
967
-
968
- // https://tools.ietf.org/html/rfc7231#section-4.3.1
969
- // https://tools.ietf.org/html/rfc7231#section-4.3.2
970
- // https://tools.ietf.org/html/rfc7231#section-4.3.5
971
-
972
- // Sending a payload body on a request that does not
973
- // expect it can cause undefined behavior on some
974
- // servers and corrupt connection state. Do not
975
- // re-use the connection for further requests.
976
-
977
- const expectsPayload = (
978
- method === 'PUT' ||
979
- method === 'POST' ||
980
- method === 'PATCH' ||
981
- method === 'QUERY' ||
982
- method === 'PROPFIND' ||
983
- method === 'PROPPATCH'
984
- )
985
-
986
- if (util.isFormDataLike(body)) {
987
- if (!extractBody) {
988
- extractBody = require('../web/fetch/body.js').extractBody
989
- }
990
-
991
- const [bodyStream, contentType] = extractBody(body)
992
- if (request.contentType == null) {
993
- headers.push('content-type', contentType)
994
- }
995
- body = bodyStream.stream
996
- contentLength = bodyStream.length
997
- } else if (util.isBlobLike(body) && request.contentType == null) {
998
- const contentType = body.type
999
- if (contentType) {
1000
- const contentTypeValue = `${contentType}`
1001
- if (!util.isValidHeaderValue(contentTypeValue)) {
1002
- util.errorRequest(client, request, new InvalidArgumentError('invalid content-type header'))
1003
- return false
1004
- }
1005
- headers.push('content-type', contentTypeValue)
1006
- }
1007
- }
1008
-
1009
- if (body && typeof body.read === 'function') {
1010
- // Try to read EOF in order to get length.
1011
- body.read(0)
1012
- }
1013
-
1014
- const bodyLength = util.bodyLength(body)
1015
-
1016
- contentLength = bodyLength ?? contentLength
1017
-
1018
- if (contentLength === null) {
1019
- contentLength = request.contentLength
1020
- }
1021
-
1022
- if (contentLength === 0 && !expectsPayload) {
1023
- // https://tools.ietf.org/html/rfc7230#section-3.3.2
1024
- // A user agent SHOULD NOT send a Content-Length header field when
1025
- // the request message does not contain a payload body and the method
1026
- // semantics do not anticipate such a body.
1027
-
1028
- contentLength = null
1029
- }
1030
-
1031
- // https://github.com/nodejs/undici/issues/2046
1032
- // A user agent may send a Content-Length header with 0 value, this should be allowed.
1033
- if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {
1034
- if (client[kStrictContentLength]) {
1035
- util.errorRequest(client, request, new RequestContentLengthMismatchError())
1036
- return false
1037
- }
1038
-
1039
- process.emitWarning(new RequestContentLengthMismatchError())
1040
- }
1041
-
1042
- const socket = client[kSocket]
1043
- clearIdleSocketValidation(socket)
1044
-
1045
- const abort = (err) => {
1046
- if (request.aborted || request.completed) {
1047
- return
1048
- }
1049
-
1050
- util.errorRequest(client, request, err || new RequestAbortedError())
1051
-
1052
- util.destroy(body)
1053
- util.destroy(socket, new InformationalError('aborted'))
1054
- }
1055
-
1056
- try {
1057
- request.onConnect(abort)
1058
- } catch (err) {
1059
- util.errorRequest(client, request, err)
1060
- }
1061
-
1062
- if (request.aborted) {
1063
- return false
1064
- }
1065
-
1066
- if (method === 'HEAD') {
1067
- // https://github.com/mcollina/undici/issues/258
1068
- // Close after a HEAD request to interop with misbehaving servers
1069
- // that may send a body in the response.
1070
-
1071
- socket[kReset] = true
1072
- }
1073
-
1074
- if (upgrade || method === 'CONNECT') {
1075
- // On CONNECT or upgrade, block pipeline from dispatching further
1076
- // requests on this connection.
1077
-
1078
- socket[kReset] = true
1079
- }
1080
-
1081
- if (reset != null) {
1082
- socket[kReset] = reset
1083
- }
1084
-
1085
- if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {
1086
- socket[kReset] = true
1087
- }
1088
-
1089
- if (blocking) {
1090
- socket[kBlocking] = true
1091
- }
1092
-
1093
- let header = `${method} ${path} HTTP/1.1\r\n`
1094
-
1095
- if (typeof host === 'string') {
1096
- header += `host: ${host}\r\n`
1097
- } else {
1098
- header += client[kHostHeader]
1099
- }
1100
-
1101
- if (upgrade) {
1102
- header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n`
1103
- } else if (client[kPipelining] && !socket[kReset]) {
1104
- header += 'connection: keep-alive\r\n'
1105
- } else {
1106
- header += 'connection: close\r\n'
1107
- }
1108
-
1109
- if (Array.isArray(headers)) {
1110
- for (let n = 0; n < headers.length; n += 2) {
1111
- const key = headers[n + 0]
1112
- const val = headers[n + 1]
1113
-
1114
- if (Array.isArray(val)) {
1115
- for (let i = 0; i < val.length; i++) {
1116
- header += `${key}: ${val[i]}\r\n`
1117
- }
1118
- } else {
1119
- header += `${key}: ${val}\r\n`
1120
- }
1121
- }
1122
- }
1123
-
1124
- if (channels.sendHeaders.hasSubscribers) {
1125
- channels.sendHeaders.publish({ request, headers: header, socket })
1126
- }
1127
-
1128
- /* istanbul ignore else: assertion */
1129
- if (!body || bodyLength === 0) {
1130
- writeBuffer(abort, null, client, request, socket, contentLength, header, expectsPayload)
1131
- } else if (util.isBuffer(body)) {
1132
- writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload)
1133
- } else if (util.isBlobLike(body)) {
1134
- if (typeof body.stream === 'function') {
1135
- writeIterable(abort, body.stream(), client, request, socket, contentLength, header, expectsPayload)
1136
- } else {
1137
- writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload)
1138
- }
1139
- } else if (util.isStream(body)) {
1140
- writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload)
1141
- } else if (util.isIterable(body)) {
1142
- writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload)
1143
- } else {
1144
- assert(false)
1145
- }
1146
-
1147
- return true
1148
- }
1149
-
1150
- function writeStream (abort, body, client, request, socket, contentLength, header, expectsPayload) {
1151
- assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')
1152
-
1153
- let finished = false
1154
-
1155
- const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })
1156
-
1157
- const onData = function (chunk) {
1158
- if (finished) {
1159
- return
1160
- }
1161
-
1162
- try {
1163
- if (!writer.write(chunk) && this.pause) {
1164
- this.pause()
1165
- }
1166
- } catch (err) {
1167
- util.destroy(this, err)
1168
- }
1169
- }
1170
- const onDrain = function () {
1171
- if (finished) {
1172
- return
1173
- }
1174
-
1175
- if (body.resume) {
1176
- body.resume()
1177
- }
1178
- }
1179
- const onClose = function () {
1180
- // 'close' might be emitted *before* 'error' for
1181
- // broken streams. Wait a tick to avoid this case.
1182
- queueMicrotask(() => {
1183
- // It's only safe to remove 'error' listener after
1184
- // 'close'.
1185
- body.removeListener('error', onFinished)
1186
- })
1187
-
1188
- if (!finished) {
1189
- const err = new RequestAbortedError()
1190
- queueMicrotask(() => onFinished(err))
1191
- }
1192
- }
1193
- const onFinished = function (err) {
1194
- if (finished) {
1195
- return
1196
- }
1197
-
1198
- finished = true
1199
-
1200
- assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))
1201
-
1202
- socket
1203
- .off('drain', onDrain)
1204
- .off('error', onFinished)
1205
-
1206
- body
1207
- .removeListener('data', onData)
1208
- .removeListener('end', onFinished)
1209
- .removeListener('close', onClose)
1210
-
1211
- if (!err) {
1212
- try {
1213
- writer.end()
1214
- } catch (er) {
1215
- err = er
1216
- }
1217
- }
1218
-
1219
- writer.destroy(err)
1220
-
1221
- if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {
1222
- util.destroy(body, err)
1223
- } else {
1224
- util.destroy(body)
1225
- }
1226
- }
1227
-
1228
- body
1229
- .on('data', onData)
1230
- .on('end', onFinished)
1231
- .on('error', onFinished)
1232
- .on('close', onClose)
1233
-
1234
- if (body.resume) {
1235
- body.resume()
1236
- }
1237
-
1238
- socket
1239
- .on('drain', onDrain)
1240
- .on('error', onFinished)
1241
-
1242
- if (body.errorEmitted ?? body.errored) {
1243
- setImmediate(() => onFinished(body.errored))
1244
- } else if (body.endEmitted ?? body.readableEnded) {
1245
- setImmediate(() => onFinished(null))
1246
- }
1247
-
1248
- if (body.closeEmitted ?? body.closed) {
1249
- setImmediate(onClose)
1250
- }
1251
- }
1252
-
1253
- function writeBuffer (abort, body, client, request, socket, contentLength, header, expectsPayload) {
1254
- try {
1255
- if (!body) {
1256
- if (contentLength === 0) {
1257
- socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1')
1258
- } else {
1259
- assert(contentLength === null, 'no body must not have content length')
1260
- socket.write(`${header}\r\n`, 'latin1')
1261
- }
1262
- } else if (util.isBuffer(body)) {
1263
- assert(contentLength === body.byteLength, 'buffer body must have content length')
1264
-
1265
- socket.cork()
1266
- socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
1267
- socket.write(body)
1268
- socket.uncork()
1269
- request.onBodySent(body)
1270
-
1271
- if (!expectsPayload && request.reset !== false) {
1272
- socket[kReset] = true
1273
- }
1274
- }
1275
- request.onRequestSent()
1276
-
1277
- client[kResume]()
1278
- } catch (err) {
1279
- abort(err)
1280
- }
1281
- }
1282
-
1283
- async function writeBlob (abort, body, client, request, socket, contentLength, header, expectsPayload) {
1284
- assert(contentLength === body.size, 'blob body must have content length')
1285
-
1286
- try {
1287
- if (contentLength != null && contentLength !== body.size) {
1288
- throw new RequestContentLengthMismatchError()
1289
- }
1290
-
1291
- const buffer = Buffer.from(await body.arrayBuffer())
1292
-
1293
- socket.cork()
1294
- socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
1295
- socket.write(buffer)
1296
- socket.uncork()
1297
-
1298
- request.onBodySent(buffer)
1299
- request.onRequestSent()
1300
-
1301
- if (!expectsPayload && request.reset !== false) {
1302
- socket[kReset] = true
1303
- }
1304
-
1305
- client[kResume]()
1306
- } catch (err) {
1307
- abort(err)
1308
- }
1309
- }
1310
-
1311
- async function writeIterable (abort, body, client, request, socket, contentLength, header, expectsPayload) {
1312
- assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')
1313
-
1314
- let callback = null
1315
- function onDrain () {
1316
- if (callback) {
1317
- const cb = callback
1318
- callback = null
1319
- cb()
1320
- }
1321
- }
1322
-
1323
- const waitForDrain = () => new Promise((resolve, reject) => {
1324
- assert(callback === null)
1325
-
1326
- if (socket[kError]) {
1327
- reject(socket[kError])
1328
- } else {
1329
- callback = resolve
1330
- }
1331
- })
1332
-
1333
- socket
1334
- .on('close', onDrain)
1335
- .on('drain', onDrain)
1336
-
1337
- const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })
1338
- try {
1339
- // It's up to the user to somehow abort the async iterable.
1340
- for await (const chunk of body) {
1341
- if (socket[kError]) {
1342
- throw socket[kError]
1343
- }
1344
-
1345
- if (!writer.write(chunk)) {
1346
- await waitForDrain()
1347
- }
1348
- }
1349
-
1350
- writer.end()
1351
- } catch (err) {
1352
- writer.destroy(err)
1353
- } finally {
1354
- socket
1355
- .off('close', onDrain)
1356
- .off('drain', onDrain)
1357
- }
1358
- }
1359
-
1360
- class AsyncWriter {
1361
- constructor ({ abort, socket, request, contentLength, client, expectsPayload, header }) {
1362
- this.socket = socket
1363
- this.request = request
1364
- this.contentLength = contentLength
1365
- this.client = client
1366
- this.bytesWritten = 0
1367
- this.expectsPayload = expectsPayload
1368
- this.header = header
1369
- this.abort = abort
1370
-
1371
- socket[kWriting] = true
1372
- }
1373
-
1374
- write (chunk) {
1375
- const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this
1376
-
1377
- if (socket[kError]) {
1378
- throw socket[kError]
1379
- }
1380
-
1381
- if (socket.destroyed) {
1382
- return false
1383
- }
1384
-
1385
- const len = Buffer.byteLength(chunk)
1386
- if (!len) {
1387
- return true
1388
- }
1389
-
1390
- // We should defer writing chunks.
1391
- if (contentLength !== null && bytesWritten + len > contentLength) {
1392
- if (client[kStrictContentLength]) {
1393
- throw new RequestContentLengthMismatchError()
1394
- }
1395
-
1396
- process.emitWarning(new RequestContentLengthMismatchError())
1397
- }
1398
-
1399
- socket.cork()
1400
-
1401
- if (bytesWritten === 0) {
1402
- if (!expectsPayload && request.reset !== false) {
1403
- socket[kReset] = true
1404
- }
1405
-
1406
- if (contentLength === null) {
1407
- socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1')
1408
- } else {
1409
- socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
1410
- }
1411
- }
1412
-
1413
- if (contentLength === null) {
1414
- socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1')
1415
- }
1416
-
1417
- this.bytesWritten += len
1418
-
1419
- const ret = socket.write(chunk)
1420
-
1421
- socket.uncork()
1422
-
1423
- request.onBodySent(chunk)
1424
-
1425
- if (!ret) {
1426
- if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
1427
- // istanbul ignore else: only for jest
1428
- if (socket[kParser].timeout.refresh) {
1429
- socket[kParser].timeout.refresh()
1430
- }
1431
- }
1432
- }
1433
-
1434
- return ret
1435
- }
1436
-
1437
- end () {
1438
- const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this
1439
- request.onRequestSent()
1440
-
1441
- socket[kWriting] = false
1442
-
1443
- if (socket[kError]) {
1444
- throw socket[kError]
1445
- }
1446
-
1447
- if (socket.destroyed) {
1448
- return
1449
- }
1450
-
1451
- if (bytesWritten === 0) {
1452
- if (expectsPayload) {
1453
- // https://tools.ietf.org/html/rfc7230#section-3.3.2
1454
- // A user agent SHOULD send a Content-Length in a request message when
1455
- // no Transfer-Encoding is sent and the request method defines a meaning
1456
- // for an enclosed payload body.
1457
-
1458
- socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1')
1459
- } else {
1460
- socket.write(`${header}\r\n`, 'latin1')
1461
- }
1462
- } else if (contentLength === null) {
1463
- socket.write('\r\n0\r\n\r\n', 'latin1')
1464
- }
1465
-
1466
- if (contentLength !== null && bytesWritten !== contentLength) {
1467
- if (client[kStrictContentLength]) {
1468
- throw new RequestContentLengthMismatchError()
1469
- } else {
1470
- process.emitWarning(new RequestContentLengthMismatchError())
1471
- }
1472
- }
1473
-
1474
- if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
1475
- // istanbul ignore else: only for jest
1476
- if (socket[kParser].timeout.refresh) {
1477
- socket[kParser].timeout.refresh()
1478
- }
1479
- }
1480
-
1481
- client[kResume]()
1482
- }
1483
-
1484
- destroy (err) {
1485
- const { socket, client, abort } = this
1486
-
1487
- socket[kWriting] = false
1488
-
1489
- if (err) {
1490
- assert(client[kRunning] <= 1, 'pipeline should only contain this request')
1491
- abort(err)
1492
- }
1493
- }
1494
- }
1495
-
1496
- module.exports = connectH1