@pnpm/exe 11.10.0 → 12.0.0-alpha.1

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 (445) hide show
  1. package/{dist/node_modules/v8-compile-cache/LICENSE → LICENSE} +2 -1
  2. package/README.md +259 -12
  3. package/install.js +175 -0
  4. package/package.json +30 -61
  5. package/pnpm +4 -1
  6. package/dist/node-gyp-bin/node-gyp +0 -6
  7. package/dist/node-gyp-bin/node-gyp.cmd +0 -5
  8. package/dist/node_modules/.package-map.json +0 -1
  9. package/dist/node_modules/@isaacs/fs-minipass/LICENSE +0 -15
  10. package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +0 -430
  11. package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +0 -3
  12. package/dist/node_modules/@isaacs/fs-minipass/dist/esm/index.js +0 -420
  13. package/dist/node_modules/@isaacs/fs-minipass/dist/esm/package.json +0 -3
  14. package/dist/node_modules/@isaacs/fs-minipass/package.json +0 -72
  15. package/dist/node_modules/abbrev/LICENSE +0 -46
  16. package/dist/node_modules/abbrev/lib/index.js +0 -53
  17. package/dist/node_modules/abbrev/package.json +0 -41
  18. package/dist/node_modules/chownr/dist/commonjs/index.js +0 -93
  19. package/dist/node_modules/chownr/dist/commonjs/package.json +0 -3
  20. package/dist/node_modules/chownr/dist/esm/index.js +0 -85
  21. package/dist/node_modules/chownr/dist/esm/package.json +0 -3
  22. package/dist/node_modules/chownr/package.json +0 -69
  23. package/dist/node_modules/env-paths/index.js +0 -74
  24. package/dist/node_modules/env-paths/license +0 -9
  25. package/dist/node_modules/env-paths/package.json +0 -45
  26. package/dist/node_modules/exponential-backoff/LICENSE +0 -202
  27. package/dist/node_modules/exponential-backoff/dist/backoff.js +0 -124
  28. package/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js +0 -25
  29. package/dist/node_modules/exponential-backoff/dist/delay/delay.base.js +0 -45
  30. package/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js +0 -17
  31. package/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js +0 -3
  32. package/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js +0 -82
  33. package/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js +0 -8
  34. package/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js +0 -15
  35. package/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js +0 -7
  36. package/dist/node_modules/exponential-backoff/dist/options.js +0 -31
  37. package/dist/node_modules/exponential-backoff/package.json +0 -62
  38. package/dist/node_modules/fdir/LICENSE +0 -7
  39. package/dist/node_modules/fdir/dist/index.cjs +0 -588
  40. package/dist/node_modules/fdir/dist/index.d.cts +0 -155
  41. package/dist/node_modules/fdir/dist/index.d.mts +0 -155
  42. package/dist/node_modules/fdir/dist/index.mjs +0 -570
  43. package/dist/node_modules/fdir/package.json +0 -103
  44. package/dist/node_modules/graceful-fs/LICENSE +0 -15
  45. package/dist/node_modules/graceful-fs/clone.js +0 -23
  46. package/dist/node_modules/graceful-fs/graceful-fs.js +0 -448
  47. package/dist/node_modules/graceful-fs/legacy-streams.js +0 -118
  48. package/dist/node_modules/graceful-fs/package.json +0 -53
  49. package/dist/node_modules/graceful-fs/polyfills.js +0 -355
  50. package/dist/node_modules/isexe/dist/commonjs/index.js +0 -56
  51. package/dist/node_modules/isexe/dist/commonjs/index.min.js +0 -2
  52. package/dist/node_modules/isexe/dist/commonjs/options.js +0 -3
  53. package/dist/node_modules/isexe/dist/commonjs/package.json +0 -3
  54. package/dist/node_modules/isexe/dist/commonjs/posix.js +0 -67
  55. package/dist/node_modules/isexe/dist/commonjs/win32.js +0 -63
  56. package/dist/node_modules/isexe/dist/esm/index.js +0 -16
  57. package/dist/node_modules/isexe/dist/esm/index.min.js +0 -2
  58. package/dist/node_modules/isexe/dist/esm/options.js +0 -2
  59. package/dist/node_modules/isexe/dist/esm/package.json +0 -3
  60. package/dist/node_modules/isexe/dist/esm/posix.js +0 -62
  61. package/dist/node_modules/isexe/dist/esm/win32.js +0 -58
  62. package/dist/node_modules/isexe/package.json +0 -78
  63. package/dist/node_modules/minipass/dist/commonjs/index.js +0 -1038
  64. package/dist/node_modules/minipass/dist/commonjs/package.json +0 -3
  65. package/dist/node_modules/minipass/dist/esm/index.js +0 -1020
  66. package/dist/node_modules/minipass/dist/esm/package.json +0 -3
  67. package/dist/node_modules/minipass/package.json +0 -77
  68. package/dist/node_modules/minizlib/LICENSE +0 -26
  69. package/dist/node_modules/minizlib/dist/commonjs/constants.js +0 -123
  70. package/dist/node_modules/minizlib/dist/commonjs/index.js +0 -416
  71. package/dist/node_modules/minizlib/dist/commonjs/package.json +0 -3
  72. package/dist/node_modules/minizlib/dist/esm/constants.js +0 -117
  73. package/dist/node_modules/minizlib/dist/esm/index.js +0 -363
  74. package/dist/node_modules/minizlib/dist/esm/package.json +0 -3
  75. package/dist/node_modules/minizlib/package.json +0 -80
  76. package/dist/node_modules/node-gyp/.release-please-manifest.json +0 -3
  77. package/dist/node_modules/node-gyp/LICENSE +0 -24
  78. package/dist/node_modules/node-gyp/addon.gypi +0 -204
  79. package/dist/node_modules/node-gyp/bin/node-gyp.js +0 -145
  80. package/dist/node_modules/node-gyp/eslint.config.js +0 -3
  81. package/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +0 -3
  82. package/dist/node_modules/node-gyp/gyp/LICENSE +0 -28
  83. package/dist/node_modules/node-gyp/gyp/data/ninja/build.ninja +0 -4
  84. package/dist/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +0 -12
  85. package/dist/node_modules/node-gyp/gyp/gyp +0 -8
  86. package/dist/node_modules/node-gyp/gyp/gyp.bat +0 -5
  87. package/dist/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  88. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -365
  89. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  90. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1283
  91. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1545
  92. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  93. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -152
  94. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -270
  95. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -607
  96. package/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -706
  97. package/dist/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -725
  98. package/dist/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -186
  99. package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -170
  100. package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -113
  101. package/dist/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  102. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  103. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -805
  104. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1169
  105. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1316
  106. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -128
  107. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -104
  108. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -461
  109. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -88
  110. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -55
  111. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2755
  112. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3970
  113. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  114. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2957
  115. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -77
  116. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1389
  117. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -26
  118. package/dist/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3097
  119. package/dist/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -99
  120. package/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -765
  121. package/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1255
  122. package/dist/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  123. package/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  124. package/dist/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -371
  125. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1936
  126. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +0 -54
  127. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -301
  128. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3180
  129. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -64
  130. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +0 -3
  131. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +0 -177
  132. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +0 -23
  133. package/dist/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +0 -15
  134. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +0 -107
  135. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +0 -252
  136. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +0 -83
  137. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +0 -359
  138. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +0 -61
  139. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +0 -192
  140. package/dist/node_modules/node-gyp/gyp/pylib/packaging/markers.py +0 -251
  141. package/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +0 -807
  142. package/dist/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  143. package/dist/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +0 -90
  144. package/dist/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +0 -1030
  145. package/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +0 -541
  146. package/dist/node_modules/node-gyp/gyp/pylib/packaging/utils.py +0 -172
  147. package/dist/node_modules/node-gyp/gyp/pylib/packaging/version.py +0 -563
  148. package/dist/node_modules/node-gyp/gyp/pyproject.toml +0 -116
  149. package/dist/node_modules/node-gyp/gyp/release-please-config.json +0 -11
  150. package/dist/node_modules/node-gyp/gyp/test_gyp.py +0 -260
  151. package/dist/node_modules/node-gyp/lib/Find-VisualStudio.cs +0 -250
  152. package/dist/node_modules/node-gyp/lib/build.js +0 -230
  153. package/dist/node_modules/node-gyp/lib/clean.js +0 -15
  154. package/dist/node_modules/node-gyp/lib/configure.js +0 -328
  155. package/dist/node_modules/node-gyp/lib/create-config-gypi.js +0 -153
  156. package/dist/node_modules/node-gyp/lib/download.js +0 -86
  157. package/dist/node_modules/node-gyp/lib/find-node-directory.js +0 -63
  158. package/dist/node_modules/node-gyp/lib/find-python.js +0 -304
  159. package/dist/node_modules/node-gyp/lib/find-visualstudio.js +0 -606
  160. package/dist/node_modules/node-gyp/lib/install.js +0 -411
  161. package/dist/node_modules/node-gyp/lib/list.js +0 -26
  162. package/dist/node_modules/node-gyp/lib/log.js +0 -168
  163. package/dist/node_modules/node-gyp/lib/node-gyp.js +0 -199
  164. package/dist/node_modules/node-gyp/lib/process-release.js +0 -144
  165. package/dist/node_modules/node-gyp/lib/rebuild.js +0 -12
  166. package/dist/node_modules/node-gyp/lib/remove.js +0 -43
  167. package/dist/node_modules/node-gyp/lib/util.js +0 -81
  168. package/dist/node_modules/node-gyp/macOS_Catalina_acid_test.sh +0 -21
  169. package/dist/node_modules/node-gyp/package.json +0 -52
  170. package/dist/node_modules/node-gyp/release-please-config.json +0 -40
  171. package/dist/node_modules/node-gyp/src/win_delay_load_hook.cc +0 -41
  172. package/dist/node_modules/nopt/LICENSE +0 -15
  173. package/dist/node_modules/nopt/bin/nopt.js +0 -29
  174. package/dist/node_modules/nopt/lib/debug.js +0 -5
  175. package/dist/node_modules/nopt/lib/nopt-lib.js +0 -514
  176. package/dist/node_modules/nopt/lib/nopt.js +0 -34
  177. package/dist/node_modules/nopt/lib/type-defs.js +0 -91
  178. package/dist/node_modules/nopt/package.json +0 -52
  179. package/dist/node_modules/picomatch/LICENSE +0 -21
  180. package/dist/node_modules/picomatch/index.js +0 -17
  181. package/dist/node_modules/picomatch/lib/constants.js +0 -184
  182. package/dist/node_modules/picomatch/lib/parse.js +0 -1416
  183. package/dist/node_modules/picomatch/lib/picomatch.js +0 -361
  184. package/dist/node_modules/picomatch/lib/scan.js +0 -391
  185. package/dist/node_modules/picomatch/lib/utils.js +0 -72
  186. package/dist/node_modules/picomatch/package.json +0 -83
  187. package/dist/node_modules/picomatch/posix.js +0 -3
  188. package/dist/node_modules/proc-log/LICENSE +0 -15
  189. package/dist/node_modules/proc-log/lib/index.js +0 -158
  190. package/dist/node_modules/proc-log/package.json +0 -46
  191. package/dist/node_modules/semver/LICENSE +0 -15
  192. package/dist/node_modules/semver/bin/semver.js +0 -195
  193. package/dist/node_modules/semver/classes/comparator.js +0 -143
  194. package/dist/node_modules/semver/classes/index.js +0 -7
  195. package/dist/node_modules/semver/classes/range.js +0 -577
  196. package/dist/node_modules/semver/classes/semver.js +0 -350
  197. package/dist/node_modules/semver/functions/clean.js +0 -8
  198. package/dist/node_modules/semver/functions/cmp.js +0 -54
  199. package/dist/node_modules/semver/functions/coerce.js +0 -62
  200. package/dist/node_modules/semver/functions/compare-build.js +0 -9
  201. package/dist/node_modules/semver/functions/compare-loose.js +0 -5
  202. package/dist/node_modules/semver/functions/compare.js +0 -7
  203. package/dist/node_modules/semver/functions/diff.js +0 -60
  204. package/dist/node_modules/semver/functions/eq.js +0 -5
  205. package/dist/node_modules/semver/functions/gt.js +0 -5
  206. package/dist/node_modules/semver/functions/gte.js +0 -5
  207. package/dist/node_modules/semver/functions/inc.js +0 -21
  208. package/dist/node_modules/semver/functions/lt.js +0 -5
  209. package/dist/node_modules/semver/functions/lte.js +0 -5
  210. package/dist/node_modules/semver/functions/major.js +0 -5
  211. package/dist/node_modules/semver/functions/minor.js +0 -5
  212. package/dist/node_modules/semver/functions/neq.js +0 -5
  213. package/dist/node_modules/semver/functions/parse.js +0 -18
  214. package/dist/node_modules/semver/functions/patch.js +0 -5
  215. package/dist/node_modules/semver/functions/prerelease.js +0 -8
  216. package/dist/node_modules/semver/functions/rcompare.js +0 -5
  217. package/dist/node_modules/semver/functions/rsort.js +0 -5
  218. package/dist/node_modules/semver/functions/satisfies.js +0 -12
  219. package/dist/node_modules/semver/functions/sort.js +0 -5
  220. package/dist/node_modules/semver/functions/truncate.js +0 -48
  221. package/dist/node_modules/semver/functions/valid.js +0 -8
  222. package/dist/node_modules/semver/index.js +0 -93
  223. package/dist/node_modules/semver/internal/constants.js +0 -37
  224. package/dist/node_modules/semver/internal/debug.js +0 -11
  225. package/dist/node_modules/semver/internal/identifiers.js +0 -29
  226. package/dist/node_modules/semver/internal/lrucache.js +0 -42
  227. package/dist/node_modules/semver/internal/parse-options.js +0 -17
  228. package/dist/node_modules/semver/internal/re.js +0 -223
  229. package/dist/node_modules/semver/package.json +0 -78
  230. package/dist/node_modules/semver/preload.js +0 -4
  231. package/dist/node_modules/semver/range.bnf +0 -17
  232. package/dist/node_modules/semver/ranges/gtr.js +0 -6
  233. package/dist/node_modules/semver/ranges/intersects.js +0 -9
  234. package/dist/node_modules/semver/ranges/ltr.js +0 -6
  235. package/dist/node_modules/semver/ranges/max-satisfying.js +0 -27
  236. package/dist/node_modules/semver/ranges/min-satisfying.js +0 -26
  237. package/dist/node_modules/semver/ranges/min-version.js +0 -63
  238. package/dist/node_modules/semver/ranges/outside.js +0 -82
  239. package/dist/node_modules/semver/ranges/simplify.js +0 -49
  240. package/dist/node_modules/semver/ranges/subset.js +0 -249
  241. package/dist/node_modules/semver/ranges/to-comparators.js +0 -10
  242. package/dist/node_modules/semver/ranges/valid.js +0 -13
  243. package/dist/node_modules/tar/dist/commonjs/create.js +0 -82
  244. package/dist/node_modules/tar/dist/commonjs/cwd-error.js +0 -18
  245. package/dist/node_modules/tar/dist/commonjs/extract.js +0 -88
  246. package/dist/node_modules/tar/dist/commonjs/get-write-flag.js +0 -32
  247. package/dist/node_modules/tar/dist/commonjs/header.js +0 -348
  248. package/dist/node_modules/tar/dist/commonjs/index.js +0 -64
  249. package/dist/node_modules/tar/dist/commonjs/index.min.js +0 -4
  250. package/dist/node_modules/tar/dist/commonjs/large-numbers.js +0 -99
  251. package/dist/node_modules/tar/dist/commonjs/list.js +0 -145
  252. package/dist/node_modules/tar/dist/commonjs/make-command.js +0 -52
  253. package/dist/node_modules/tar/dist/commonjs/mkdir.js +0 -187
  254. package/dist/node_modules/tar/dist/commonjs/mode-fix.js +0 -29
  255. package/dist/node_modules/tar/dist/commonjs/normalize-unicode.js +0 -38
  256. package/dist/node_modules/tar/dist/commonjs/normalize-windows-path.js +0 -12
  257. package/dist/node_modules/tar/dist/commonjs/options.js +0 -66
  258. package/dist/node_modules/tar/dist/commonjs/pack.js +0 -544
  259. package/dist/node_modules/tar/dist/commonjs/package.json +0 -3
  260. package/dist/node_modules/tar/dist/commonjs/parse.js +0 -645
  261. package/dist/node_modules/tar/dist/commonjs/path-reservations.js +0 -170
  262. package/dist/node_modules/tar/dist/commonjs/pax.js +0 -182
  263. package/dist/node_modules/tar/dist/commonjs/process-umask.js +0 -7
  264. package/dist/node_modules/tar/dist/commonjs/read-entry.js +0 -136
  265. package/dist/node_modules/tar/dist/commonjs/replace.js +0 -227
  266. package/dist/node_modules/tar/dist/commonjs/strip-absolute-path.js +0 -29
  267. package/dist/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +0 -18
  268. package/dist/node_modules/tar/dist/commonjs/symlink-error.js +0 -19
  269. package/dist/node_modules/tar/dist/commonjs/types.js +0 -70
  270. package/dist/node_modules/tar/dist/commonjs/unpack.js +0 -932
  271. package/dist/node_modules/tar/dist/commonjs/update.js +0 -33
  272. package/dist/node_modules/tar/dist/commonjs/warn-method.js +0 -31
  273. package/dist/node_modules/tar/dist/commonjs/winchars.js +0 -14
  274. package/dist/node_modules/tar/dist/commonjs/write-entry.js +0 -698
  275. package/dist/node_modules/tar/dist/esm/create.js +0 -76
  276. package/dist/node_modules/tar/dist/esm/cwd-error.js +0 -14
  277. package/dist/node_modules/tar/dist/esm/extract.js +0 -49
  278. package/dist/node_modules/tar/dist/esm/get-write-flag.js +0 -26
  279. package/dist/node_modules/tar/dist/esm/header.js +0 -311
  280. package/dist/node_modules/tar/dist/esm/index.js +0 -20
  281. package/dist/node_modules/tar/dist/esm/index.min.js +0 -4
  282. package/dist/node_modules/tar/dist/esm/large-numbers.js +0 -94
  283. package/dist/node_modules/tar/dist/esm/list.js +0 -105
  284. package/dist/node_modules/tar/dist/esm/make-command.js +0 -48
  285. package/dist/node_modules/tar/dist/esm/mkdir.js +0 -179
  286. package/dist/node_modules/tar/dist/esm/mode-fix.js +0 -25
  287. package/dist/node_modules/tar/dist/esm/normalize-unicode.js +0 -34
  288. package/dist/node_modules/tar/dist/esm/normalize-windows-path.js +0 -9
  289. package/dist/node_modules/tar/dist/esm/options.js +0 -54
  290. package/dist/node_modules/tar/dist/esm/pack.js +0 -502
  291. package/dist/node_modules/tar/dist/esm/package.json +0 -3
  292. package/dist/node_modules/tar/dist/esm/parse.js +0 -641
  293. package/dist/node_modules/tar/dist/esm/path-reservations.js +0 -166
  294. package/dist/node_modules/tar/dist/esm/pax.js +0 -178
  295. package/dist/node_modules/tar/dist/esm/process-umask.js +0 -3
  296. package/dist/node_modules/tar/dist/esm/read-entry.js +0 -132
  297. package/dist/node_modules/tar/dist/esm/replace.js +0 -221
  298. package/dist/node_modules/tar/dist/esm/strip-absolute-path.js +0 -25
  299. package/dist/node_modules/tar/dist/esm/strip-trailing-slashes.js +0 -14
  300. package/dist/node_modules/tar/dist/esm/symlink-error.js +0 -15
  301. package/dist/node_modules/tar/dist/esm/types.js +0 -65
  302. package/dist/node_modules/tar/dist/esm/unpack.js +0 -891
  303. package/dist/node_modules/tar/dist/esm/update.js +0 -30
  304. package/dist/node_modules/tar/dist/esm/warn-method.js +0 -27
  305. package/dist/node_modules/tar/dist/esm/winchars.js +0 -9
  306. package/dist/node_modules/tar/dist/esm/write-entry.js +0 -656
  307. package/dist/node_modules/tar/package.json +0 -298
  308. package/dist/node_modules/tinyglobby/LICENSE +0 -21
  309. package/dist/node_modules/tinyglobby/dist/index.cjs +0 -335
  310. package/dist/node_modules/tinyglobby/dist/index.d.cts +0 -148
  311. package/dist/node_modules/tinyglobby/dist/index.d.mts +0 -148
  312. package/dist/node_modules/tinyglobby/dist/index.mjs +0 -307
  313. package/dist/node_modules/tinyglobby/package.json +0 -70
  314. package/dist/node_modules/undici/LICENSE +0 -21
  315. package/dist/node_modules/undici/index-fetch.js +0 -35
  316. package/dist/node_modules/undici/index.js +0 -169
  317. package/dist/node_modules/undici/lib/api/abort-signal.js +0 -57
  318. package/dist/node_modules/undici/lib/api/api-connect.js +0 -108
  319. package/dist/node_modules/undici/lib/api/api-pipeline.js +0 -251
  320. package/dist/node_modules/undici/lib/api/api-request.js +0 -214
  321. package/dist/node_modules/undici/lib/api/api-stream.js +0 -220
  322. package/dist/node_modules/undici/lib/api/api-upgrade.js +0 -108
  323. package/dist/node_modules/undici/lib/api/index.js +0 -7
  324. package/dist/node_modules/undici/lib/api/readable.js +0 -385
  325. package/dist/node_modules/undici/lib/api/util.js +0 -93
  326. package/dist/node_modules/undici/lib/core/connect.js +0 -240
  327. package/dist/node_modules/undici/lib/core/constants.js +0 -118
  328. package/dist/node_modules/undici/lib/core/diagnostics.js +0 -202
  329. package/dist/node_modules/undici/lib/core/errors.js +0 -425
  330. package/dist/node_modules/undici/lib/core/request.js +0 -405
  331. package/dist/node_modules/undici/lib/core/symbols.js +0 -67
  332. package/dist/node_modules/undici/lib/core/tree.js +0 -152
  333. package/dist/node_modules/undici/lib/core/util.js +0 -719
  334. package/dist/node_modules/undici/lib/dispatcher/agent.js +0 -129
  335. package/dist/node_modules/undici/lib/dispatcher/balanced-pool.js +0 -209
  336. package/dist/node_modules/undici/lib/dispatcher/client-h1.js +0 -1487
  337. package/dist/node_modules/undici/lib/dispatcher/client-h2.js +0 -744
  338. package/dist/node_modules/undici/lib/dispatcher/client.js +0 -623
  339. package/dist/node_modules/undici/lib/dispatcher/dispatcher-base.js +0 -199
  340. package/dist/node_modules/undici/lib/dispatcher/dispatcher.js +0 -65
  341. package/dist/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +0 -160
  342. package/dist/node_modules/undici/lib/dispatcher/fixed-queue.js +0 -117
  343. package/dist/node_modules/undici/lib/dispatcher/pool-base.js +0 -194
  344. package/dist/node_modules/undici/lib/dispatcher/pool-stats.js +0 -34
  345. package/dist/node_modules/undici/lib/dispatcher/pool.js +0 -107
  346. package/dist/node_modules/undici/lib/dispatcher/proxy-agent.js +0 -274
  347. package/dist/node_modules/undici/lib/dispatcher/retry-agent.js +0 -35
  348. package/dist/node_modules/undici/lib/global.js +0 -32
  349. package/dist/node_modules/undici/lib/handler/decorator-handler.js +0 -44
  350. package/dist/node_modules/undici/lib/handler/redirect-handler.js +0 -232
  351. package/dist/node_modules/undici/lib/handler/retry-handler.js +0 -374
  352. package/dist/node_modules/undici/lib/interceptor/dns.js +0 -375
  353. package/dist/node_modules/undici/lib/interceptor/dump.js +0 -123
  354. package/dist/node_modules/undici/lib/interceptor/redirect-interceptor.js +0 -21
  355. package/dist/node_modules/undici/lib/interceptor/redirect.js +0 -24
  356. package/dist/node_modules/undici/lib/interceptor/response-error.js +0 -86
  357. package/dist/node_modules/undici/lib/interceptor/retry.js +0 -19
  358. package/dist/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  359. package/dist/node_modules/undici/lib/llhttp/constants.js +0 -278
  360. package/dist/node_modules/undici/lib/llhttp/llhttp-wasm.js +0 -5
  361. package/dist/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +0 -5
  362. package/dist/node_modules/undici/lib/llhttp/utils.js +0 -15
  363. package/dist/node_modules/undici/lib/mock/mock-agent.js +0 -160
  364. package/dist/node_modules/undici/lib/mock/mock-client.js +0 -59
  365. package/dist/node_modules/undici/lib/mock/mock-errors.js +0 -28
  366. package/dist/node_modules/undici/lib/mock/mock-interceptor.js +0 -207
  367. package/dist/node_modules/undici/lib/mock/mock-pool.js +0 -59
  368. package/dist/node_modules/undici/lib/mock/mock-symbols.js +0 -23
  369. package/dist/node_modules/undici/lib/mock/mock-utils.js +0 -367
  370. package/dist/node_modules/undici/lib/mock/pending-interceptors-formatter.js +0 -43
  371. package/dist/node_modules/undici/lib/mock/pluralizer.js +0 -29
  372. package/dist/node_modules/undici/lib/util/timers.js +0 -423
  373. package/dist/node_modules/undici/lib/web/cache/cache.js +0 -859
  374. package/dist/node_modules/undici/lib/web/cache/cachestorage.js +0 -152
  375. package/dist/node_modules/undici/lib/web/cache/symbols.js +0 -5
  376. package/dist/node_modules/undici/lib/web/cache/util.js +0 -45
  377. package/dist/node_modules/undici/lib/web/cookies/constants.js +0 -12
  378. package/dist/node_modules/undici/lib/web/cookies/index.js +0 -184
  379. package/dist/node_modules/undici/lib/web/cookies/parse.js +0 -310
  380. package/dist/node_modules/undici/lib/web/cookies/util.js +0 -282
  381. package/dist/node_modules/undici/lib/web/eventsource/eventsource-stream.js +0 -398
  382. package/dist/node_modules/undici/lib/web/eventsource/eventsource.js +0 -480
  383. package/dist/node_modules/undici/lib/web/eventsource/util.js +0 -37
  384. package/dist/node_modules/undici/lib/web/fetch/LICENSE +0 -21
  385. package/dist/node_modules/undici/lib/web/fetch/body.js +0 -529
  386. package/dist/node_modules/undici/lib/web/fetch/constants.js +0 -124
  387. package/dist/node_modules/undici/lib/web/fetch/data-url.js +0 -744
  388. package/dist/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +0 -46
  389. package/dist/node_modules/undici/lib/web/fetch/file.js +0 -126
  390. package/dist/node_modules/undici/lib/web/fetch/formdata-parser.js +0 -474
  391. package/dist/node_modules/undici/lib/web/fetch/formdata.js +0 -252
  392. package/dist/node_modules/undici/lib/web/fetch/global.js +0 -40
  393. package/dist/node_modules/undici/lib/web/fetch/headers.js +0 -687
  394. package/dist/node_modules/undici/lib/web/fetch/index.js +0 -2272
  395. package/dist/node_modules/undici/lib/web/fetch/request.js +0 -1037
  396. package/dist/node_modules/undici/lib/web/fetch/response.js +0 -610
  397. package/dist/node_modules/undici/lib/web/fetch/symbols.js +0 -9
  398. package/dist/node_modules/undici/lib/web/fetch/util.js +0 -1632
  399. package/dist/node_modules/undici/lib/web/fetch/webidl.js +0 -695
  400. package/dist/node_modules/undici/lib/web/fileapi/encoding.js +0 -290
  401. package/dist/node_modules/undici/lib/web/fileapi/filereader.js +0 -344
  402. package/dist/node_modules/undici/lib/web/fileapi/progressevent.js +0 -78
  403. package/dist/node_modules/undici/lib/web/fileapi/symbols.js +0 -10
  404. package/dist/node_modules/undici/lib/web/fileapi/util.js +0 -391
  405. package/dist/node_modules/undici/lib/web/websocket/connection.js +0 -371
  406. package/dist/node_modules/undici/lib/web/websocket/constants.js +0 -66
  407. package/dist/node_modules/undici/lib/web/websocket/events.js +0 -329
  408. package/dist/node_modules/undici/lib/web/websocket/frame.js +0 -96
  409. package/dist/node_modules/undici/lib/web/websocket/permessage-deflate.js +0 -100
  410. package/dist/node_modules/undici/lib/web/websocket/receiver.js +0 -513
  411. package/dist/node_modules/undici/lib/web/websocket/sender.js +0 -104
  412. package/dist/node_modules/undici/lib/web/websocket/symbols.js +0 -12
  413. package/dist/node_modules/undici/lib/web/websocket/util.js +0 -322
  414. package/dist/node_modules/undici/lib/web/websocket/websocket.js +0 -595
  415. package/dist/node_modules/undici/package.json +0 -160
  416. package/dist/node_modules/undici/scripts/strip-comments.js +0 -8
  417. package/dist/node_modules/v8-compile-cache/package.json +0 -34
  418. package/dist/node_modules/v8-compile-cache/v8-compile-cache.js +0 -373
  419. package/dist/node_modules/which/LICENSE +0 -15
  420. package/dist/node_modules/which/bin/which.js +0 -52
  421. package/dist/node_modules/which/lib/index.js +0 -111
  422. package/dist/node_modules/which/package.json +0 -52
  423. package/dist/node_modules/yallist/dist/commonjs/index.js +0 -384
  424. package/dist/node_modules/yallist/dist/commonjs/package.json +0 -3
  425. package/dist/node_modules/yallist/dist/esm/index.js +0 -379
  426. package/dist/node_modules/yallist/dist/esm/package.json +0 -3
  427. package/dist/node_modules/yallist/package.json +0 -68
  428. package/dist/pnpm.mjs +0 -307717
  429. package/dist/pnpmrc +0 -2
  430. package/dist/templates/completion.bash +0 -31
  431. package/dist/templates/completion.fish +0 -22
  432. package/dist/templates/completion.ps1 +0 -193
  433. package/dist/templates/completion.zsh +0 -27
  434. package/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  435. package/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  436. package/dist/worker.js +0 -11938
  437. package/platform-pkg-name.js +0 -18
  438. package/pn.cmd +0 -2
  439. package/pn.ps1 +0 -1
  440. package/pnpx.cmd +0 -2
  441. package/pnpx.ps1 +0 -1
  442. package/pnx.cmd +0 -2
  443. package/pnx.ps1 +0 -1
  444. package/prepare.js +0 -29
  445. package/setup.js +0 -106
@@ -1,46 +0,0 @@
1
- 'use strict'
2
-
3
- const { kConnected, kSize } = require('../../core/symbols')
4
-
5
- class CompatWeakRef {
6
- constructor (value) {
7
- this.value = value
8
- }
9
-
10
- deref () {
11
- return this.value[kConnected] === 0 && this.value[kSize] === 0
12
- ? undefined
13
- : this.value
14
- }
15
- }
16
-
17
- class CompatFinalizer {
18
- constructor (finalizer) {
19
- this.finalizer = finalizer
20
- }
21
-
22
- register (dispatcher, key) {
23
- if (dispatcher.on) {
24
- dispatcher.on('disconnect', () => {
25
- if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
26
- this.finalizer(key)
27
- }
28
- })
29
- }
30
- }
31
-
32
- unregister (key) {}
33
- }
34
-
35
- module.exports = function () {
36
- // FIXME: remove workaround when the Node bug is backported to v18
37
- // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308
38
- if (process.env.NODE_V8_COVERAGE && process.version.startsWith('v18')) {
39
- process._rawDebug('Using compatibility WeakRef and FinalizationRegistry')
40
- return {
41
- WeakRef: CompatWeakRef,
42
- FinalizationRegistry: CompatFinalizer
43
- }
44
- }
45
- return { WeakRef, FinalizationRegistry }
46
- }
@@ -1,126 +0,0 @@
1
- 'use strict'
2
-
3
- const { Blob, File } = require('node:buffer')
4
- const { kState } = require('./symbols')
5
- const { webidl } = require('./webidl')
6
-
7
- // TODO(@KhafraDev): remove
8
- class FileLike {
9
- constructor (blobLike, fileName, options = {}) {
10
- // TODO: argument idl type check
11
-
12
- // The File constructor is invoked with two or three parameters, depending
13
- // on whether the optional dictionary parameter is used. When the File()
14
- // constructor is invoked, user agents must run the following steps:
15
-
16
- // 1. Let bytes be the result of processing blob parts given fileBits and
17
- // options.
18
-
19
- // 2. Let n be the fileName argument to the constructor.
20
- const n = fileName
21
-
22
- // 3. Process FilePropertyBag dictionary argument by running the following
23
- // substeps:
24
-
25
- // 1. If the type member is provided and is not the empty string, let t
26
- // be set to the type dictionary member. If t contains any characters
27
- // outside the range U+0020 to U+007E, then set t to the empty string
28
- // and return from these substeps.
29
- // TODO
30
- const t = options.type
31
-
32
- // 2. Convert every character in t to ASCII lowercase.
33
- // TODO
34
-
35
- // 3. If the lastModified member is provided, let d be set to the
36
- // lastModified dictionary member. If it is not provided, set d to the
37
- // current date and time represented as the number of milliseconds since
38
- // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).
39
- const d = options.lastModified ?? Date.now()
40
-
41
- // 4. Return a new File object F such that:
42
- // F refers to the bytes byte sequence.
43
- // F.size is set to the number of total bytes in bytes.
44
- // F.name is set to n.
45
- // F.type is set to t.
46
- // F.lastModified is set to d.
47
-
48
- this[kState] = {
49
- blobLike,
50
- name: n,
51
- type: t,
52
- lastModified: d
53
- }
54
- }
55
-
56
- stream (...args) {
57
- webidl.brandCheck(this, FileLike)
58
-
59
- return this[kState].blobLike.stream(...args)
60
- }
61
-
62
- arrayBuffer (...args) {
63
- webidl.brandCheck(this, FileLike)
64
-
65
- return this[kState].blobLike.arrayBuffer(...args)
66
- }
67
-
68
- slice (...args) {
69
- webidl.brandCheck(this, FileLike)
70
-
71
- return this[kState].blobLike.slice(...args)
72
- }
73
-
74
- text (...args) {
75
- webidl.brandCheck(this, FileLike)
76
-
77
- return this[kState].blobLike.text(...args)
78
- }
79
-
80
- get size () {
81
- webidl.brandCheck(this, FileLike)
82
-
83
- return this[kState].blobLike.size
84
- }
85
-
86
- get type () {
87
- webidl.brandCheck(this, FileLike)
88
-
89
- return this[kState].blobLike.type
90
- }
91
-
92
- get name () {
93
- webidl.brandCheck(this, FileLike)
94
-
95
- return this[kState].name
96
- }
97
-
98
- get lastModified () {
99
- webidl.brandCheck(this, FileLike)
100
-
101
- return this[kState].lastModified
102
- }
103
-
104
- get [Symbol.toStringTag] () {
105
- return 'File'
106
- }
107
- }
108
-
109
- webidl.converters.Blob = webidl.interfaceConverter(Blob)
110
-
111
- // If this function is moved to ./util.js, some tools (such as
112
- // rollup) will warn about circular dependencies. See:
113
- // https://github.com/nodejs/undici/issues/1629
114
- function isFileLike (object) {
115
- return (
116
- (object instanceof File) ||
117
- (
118
- object &&
119
- (typeof object.stream === 'function' ||
120
- typeof object.arrayBuffer === 'function') &&
121
- object[Symbol.toStringTag] === 'File'
122
- )
123
- )
124
- }
125
-
126
- module.exports = { FileLike, isFileLike }
@@ -1,474 +0,0 @@
1
- 'use strict'
2
-
3
- const { isUSVString, bufferToLowerCasedHeaderName } = require('../../core/util')
4
- const { utf8DecodeBytes } = require('./util')
5
- const { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require('./data-url')
6
- const { isFileLike } = require('./file')
7
- const { makeEntry } = require('./formdata')
8
- const assert = require('node:assert')
9
- const { File: NodeFile } = require('node:buffer')
10
-
11
- const File = globalThis.File ?? NodeFile
12
-
13
- const formDataNameBuffer = Buffer.from('form-data; name="')
14
- const filenameBuffer = Buffer.from('; filename')
15
- const dd = Buffer.from('--')
16
- const ddcrlf = Buffer.from('--\r\n')
17
-
18
- /**
19
- * @param {string} chars
20
- */
21
- function isAsciiString (chars) {
22
- for (let i = 0; i < chars.length; ++i) {
23
- if ((chars.charCodeAt(i) & ~0x7F) !== 0) {
24
- return false
25
- }
26
- }
27
- return true
28
- }
29
-
30
- /**
31
- * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-boundary
32
- * @param {string} boundary
33
- */
34
- function validateBoundary (boundary) {
35
- const length = boundary.length
36
-
37
- // - its length is greater or equal to 27 and lesser or equal to 70, and
38
- if (length < 27 || length > 70) {
39
- return false
40
- }
41
-
42
- // - it is composed by bytes in the ranges 0x30 to 0x39, 0x41 to 0x5A, or
43
- // 0x61 to 0x7A, inclusive (ASCII alphanumeric), or which are 0x27 ('),
44
- // 0x2D (-) or 0x5F (_).
45
- for (let i = 0; i < length; ++i) {
46
- const cp = boundary.charCodeAt(i)
47
-
48
- if (!(
49
- (cp >= 0x30 && cp <= 0x39) ||
50
- (cp >= 0x41 && cp <= 0x5a) ||
51
- (cp >= 0x61 && cp <= 0x7a) ||
52
- cp === 0x27 ||
53
- cp === 0x2d ||
54
- cp === 0x5f
55
- )) {
56
- return false
57
- }
58
- }
59
-
60
- return true
61
- }
62
-
63
- /**
64
- * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-parser
65
- * @param {Buffer} input
66
- * @param {ReturnType<import('./data-url')['parseMIMEType']>} mimeType
67
- */
68
- function multipartFormDataParser (input, mimeType) {
69
- // 1. Assert: mimeType’s essence is "multipart/form-data".
70
- assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data')
71
-
72
- const boundaryString = mimeType.parameters.get('boundary')
73
-
74
- // 2. If mimeType’s parameters["boundary"] does not exist, return failure.
75
- // Otherwise, let boundary be the result of UTF-8 decoding mimeType’s
76
- // parameters["boundary"].
77
- if (boundaryString === undefined) {
78
- return 'failure'
79
- }
80
-
81
- const boundary = Buffer.from(`--${boundaryString}`, 'utf8')
82
-
83
- // 3. Let entry list be an empty entry list.
84
- const entryList = []
85
-
86
- // 4. Let position be a pointer to a byte in input, initially pointing at
87
- // the first byte.
88
- const position = { position: 0 }
89
-
90
- // Note: undici addition, allows leading and trailing CRLFs.
91
- while (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) {
92
- position.position += 2
93
- }
94
-
95
- let trailing = input.length
96
-
97
- while (input[trailing - 1] === 0x0a && input[trailing - 2] === 0x0d) {
98
- trailing -= 2
99
- }
100
-
101
- if (trailing !== input.length) {
102
- input = input.subarray(0, trailing)
103
- }
104
-
105
- // 5. While true:
106
- while (true) {
107
- // 5.1. If position points to a sequence of bytes starting with 0x2D 0x2D
108
- // (`--`) followed by boundary, advance position by 2 + the length of
109
- // boundary. Otherwise, return failure.
110
- // Note: boundary is padded with 2 dashes already, no need to add 2.
111
- if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) {
112
- position.position += boundary.length
113
- } else {
114
- return 'failure'
115
- }
116
-
117
- // 5.2. If position points to the sequence of bytes 0x2D 0x2D 0x0D 0x0A
118
- // (`--` followed by CR LF) followed by the end of input, return entry list.
119
- // Note: a body does NOT need to end with CRLF. It can end with --.
120
- if (
121
- (position.position === input.length - 2 && bufferStartsWith(input, dd, position)) ||
122
- (position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position))
123
- ) {
124
- return entryList
125
- }
126
-
127
- // 5.3. If position does not point to a sequence of bytes starting with 0x0D
128
- // 0x0A (CR LF), return failure.
129
- if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {
130
- return 'failure'
131
- }
132
-
133
- // 5.4. Advance position by 2. (This skips past the newline.)
134
- position.position += 2
135
-
136
- // 5.5. Let name, filename and contentType be the result of parsing
137
- // multipart/form-data headers on input and position, if the result
138
- // is not failure. Otherwise, return failure.
139
- const result = parseMultipartFormDataHeaders(input, position)
140
-
141
- if (result === 'failure') {
142
- return 'failure'
143
- }
144
-
145
- let { name, filename, contentType, encoding } = result
146
-
147
- // 5.6. Advance position by 2. (This skips past the empty line that marks
148
- // the end of the headers.)
149
- position.position += 2
150
-
151
- // 5.7. Let body be the empty byte sequence.
152
- let body
153
-
154
- // 5.8. Body loop: While position is not past the end of input:
155
- // TODO: the steps here are completely wrong
156
- {
157
- const boundaryIndex = input.indexOf(boundary.subarray(2), position.position)
158
-
159
- if (boundaryIndex === -1) {
160
- return 'failure'
161
- }
162
-
163
- body = input.subarray(position.position, boundaryIndex - 4)
164
-
165
- position.position += body.length
166
-
167
- // Note: position must be advanced by the body's length before being
168
- // decoded, otherwise the parsing will fail.
169
- if (encoding === 'base64') {
170
- body = Buffer.from(body.toString(), 'base64')
171
- }
172
- }
173
-
174
- // 5.9. If position does not point to a sequence of bytes starting with
175
- // 0x0D 0x0A (CR LF), return failure. Otherwise, advance position by 2.
176
- if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {
177
- return 'failure'
178
- } else {
179
- position.position += 2
180
- }
181
-
182
- // 5.10. If filename is not null:
183
- let value
184
-
185
- if (filename !== null) {
186
- // 5.10.1. If contentType is null, set contentType to "text/plain".
187
- contentType ??= 'text/plain'
188
-
189
- // 5.10.2. If contentType is not an ASCII string, set contentType to the empty string.
190
-
191
- // Note: `buffer.isAscii` can be used at zero-cost, but converting a string to a buffer is a high overhead.
192
- // Content-Type is a relatively small string, so it is faster to use `String#charCodeAt`.
193
- if (!isAsciiString(contentType)) {
194
- contentType = ''
195
- }
196
-
197
- // 5.10.3. Let value be a new File object with name filename, type contentType, and body body.
198
- value = new File([body], filename, { type: contentType })
199
- } else {
200
- // 5.11. Otherwise:
201
-
202
- // 5.11.1. Let value be the UTF-8 decoding without BOM of body.
203
- value = utf8DecodeBytes(Buffer.from(body))
204
- }
205
-
206
- // 5.12. Assert: name is a scalar value string and value is either a scalar value string or a File object.
207
- assert(isUSVString(name))
208
- assert((typeof value === 'string' && isUSVString(value)) || isFileLike(value))
209
-
210
- // 5.13. Create an entry with name and value, and append it to entry list.
211
- entryList.push(makeEntry(name, value, filename))
212
- }
213
- }
214
-
215
- /**
216
- * @see https://andreubotella.github.io/multipart-form-data/#parse-multipart-form-data-headers
217
- * @param {Buffer} input
218
- * @param {{ position: number }} position
219
- */
220
- function parseMultipartFormDataHeaders (input, position) {
221
- // 1. Let name, filename and contentType be null.
222
- let name = null
223
- let filename = null
224
- let contentType = null
225
- let encoding = null
226
-
227
- // 2. While true:
228
- while (true) {
229
- // 2.1. If position points to a sequence of bytes starting with 0x0D 0x0A (CR LF):
230
- if (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) {
231
- // 2.1.1. If name is null, return failure.
232
- if (name === null) {
233
- return 'failure'
234
- }
235
-
236
- // 2.1.2. Return name, filename and contentType.
237
- return { name, filename, contentType, encoding }
238
- }
239
-
240
- // 2.2. Let header name be the result of collecting a sequence of bytes that are
241
- // not 0x0A (LF), 0x0D (CR) or 0x3A (:), given position.
242
- let headerName = collectASequenceOfBytes(
243
- (char) => char !== 0x0a && char !== 0x0d && char !== 0x3a,
244
- input,
245
- position
246
- )
247
-
248
- // 2.3. Remove any HTTP tab or space bytes from the start or end of header name.
249
- headerName = removeChars(headerName, true, true, (char) => char === 0x9 || char === 0x20)
250
-
251
- // 2.4. If header name does not match the field-name token production, return failure.
252
- if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) {
253
- return 'failure'
254
- }
255
-
256
- // 2.5. If the byte at position is not 0x3A (:), return failure.
257
- if (input[position.position] !== 0x3a) {
258
- return 'failure'
259
- }
260
-
261
- // 2.6. Advance position by 1.
262
- position.position++
263
-
264
- // 2.7. Collect a sequence of bytes that are HTTP tab or space bytes given position.
265
- // (Do nothing with those bytes.)
266
- collectASequenceOfBytes(
267
- (char) => char === 0x20 || char === 0x09,
268
- input,
269
- position
270
- )
271
-
272
- // 2.8. Byte-lowercase header name and switch on the result:
273
- switch (bufferToLowerCasedHeaderName(headerName)) {
274
- case 'content-disposition': {
275
- // 1. Set name and filename to null.
276
- name = filename = null
277
-
278
- // 2. If position does not point to a sequence of bytes starting with
279
- // `form-data; name="`, return failure.
280
- if (!bufferStartsWith(input, formDataNameBuffer, position)) {
281
- return 'failure'
282
- }
283
-
284
- // 3. Advance position so it points at the byte after the next 0x22 (")
285
- // byte (the one in the sequence of bytes matched above).
286
- position.position += 17
287
-
288
- // 4. Set name to the result of parsing a multipart/form-data name given
289
- // input and position, if the result is not failure. Otherwise, return
290
- // failure.
291
- name = parseMultipartFormDataName(input, position)
292
-
293
- if (name === null) {
294
- return 'failure'
295
- }
296
-
297
- // 5. If position points to a sequence of bytes starting with `; filename="`:
298
- if (bufferStartsWith(input, filenameBuffer, position)) {
299
- // Note: undici also handles filename*
300
- let check = position.position + filenameBuffer.length
301
-
302
- if (input[check] === 0x2a) {
303
- position.position += 1
304
- check += 1
305
- }
306
-
307
- if (input[check] !== 0x3d || input[check + 1] !== 0x22) { // ="
308
- return 'failure'
309
- }
310
-
311
- // 1. Advance position so it points at the byte after the next 0x22 (") byte
312
- // (the one in the sequence of bytes matched above).
313
- position.position += 12
314
-
315
- // 2. Set filename to the result of parsing a multipart/form-data name given
316
- // input and position, if the result is not failure. Otherwise, return failure.
317
- filename = parseMultipartFormDataName(input, position)
318
-
319
- if (filename === null) {
320
- return 'failure'
321
- }
322
- }
323
-
324
- break
325
- }
326
- case 'content-type': {
327
- // 1. Let header value be the result of collecting a sequence of bytes that are
328
- // not 0x0A (LF) or 0x0D (CR), given position.
329
- let headerValue = collectASequenceOfBytes(
330
- (char) => char !== 0x0a && char !== 0x0d,
331
- input,
332
- position
333
- )
334
-
335
- // 2. Remove any HTTP tab or space bytes from the end of header value.
336
- headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)
337
-
338
- // 3. Set contentType to the isomorphic decoding of header value.
339
- contentType = isomorphicDecode(headerValue)
340
-
341
- break
342
- }
343
- case 'content-transfer-encoding': {
344
- let headerValue = collectASequenceOfBytes(
345
- (char) => char !== 0x0a && char !== 0x0d,
346
- input,
347
- position
348
- )
349
-
350
- headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)
351
-
352
- encoding = isomorphicDecode(headerValue)
353
-
354
- break
355
- }
356
- default: {
357
- // Collect a sequence of bytes that are not 0x0A (LF) or 0x0D (CR), given position.
358
- // (Do nothing with those bytes.)
359
- collectASequenceOfBytes(
360
- (char) => char !== 0x0a && char !== 0x0d,
361
- input,
362
- position
363
- )
364
- }
365
- }
366
-
367
- // 2.9. If position does not point to a sequence of bytes starting with 0x0D 0x0A
368
- // (CR LF), return failure. Otherwise, advance position by 2 (past the newline).
369
- if (input[position.position] !== 0x0d && input[position.position + 1] !== 0x0a) {
370
- return 'failure'
371
- } else {
372
- position.position += 2
373
- }
374
- }
375
- }
376
-
377
- /**
378
- * @see https://andreubotella.github.io/multipart-form-data/#parse-a-multipart-form-data-name
379
- * @param {Buffer} input
380
- * @param {{ position: number }} position
381
- */
382
- function parseMultipartFormDataName (input, position) {
383
- // 1. Assert: The byte at (position - 1) is 0x22 (").
384
- assert(input[position.position - 1] === 0x22)
385
-
386
- // 2. Let name be the result of collecting a sequence of bytes that are not 0x0A (LF), 0x0D (CR) or 0x22 ("), given position.
387
- /** @type {string | Buffer} */
388
- let name = collectASequenceOfBytes(
389
- (char) => char !== 0x0a && char !== 0x0d && char !== 0x22,
390
- input,
391
- position
392
- )
393
-
394
- // 3. If the byte at position is not 0x22 ("), return failure. Otherwise, advance position by 1.
395
- if (input[position.position] !== 0x22) {
396
- return null // name could be 'failure'
397
- } else {
398
- position.position++
399
- }
400
-
401
- // 4. Replace any occurrence of the following subsequences in name with the given byte:
402
- // - `%0A`: 0x0A (LF)
403
- // - `%0D`: 0x0D (CR)
404
- // - `%22`: 0x22 (")
405
- name = new TextDecoder().decode(name)
406
- .replace(/%0A/ig, '\n')
407
- .replace(/%0D/ig, '\r')
408
- .replace(/%22/g, '"')
409
-
410
- // 5. Return the UTF-8 decoding without BOM of name.
411
- return name
412
- }
413
-
414
- /**
415
- * @param {(char: number) => boolean} condition
416
- * @param {Buffer} input
417
- * @param {{ position: number }} position
418
- */
419
- function collectASequenceOfBytes (condition, input, position) {
420
- let start = position.position
421
-
422
- while (start < input.length && condition(input[start])) {
423
- ++start
424
- }
425
-
426
- return input.subarray(position.position, (position.position = start))
427
- }
428
-
429
- /**
430
- * @param {Buffer} buf
431
- * @param {boolean} leading
432
- * @param {boolean} trailing
433
- * @param {(charCode: number) => boolean} predicate
434
- * @returns {Buffer}
435
- */
436
- function removeChars (buf, leading, trailing, predicate) {
437
- let lead = 0
438
- let trail = buf.length - 1
439
-
440
- if (leading) {
441
- while (lead < buf.length && predicate(buf[lead])) lead++
442
- }
443
-
444
- if (trailing) {
445
- while (trail > 0 && predicate(buf[trail])) trail--
446
- }
447
-
448
- return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1)
449
- }
450
-
451
- /**
452
- * Checks if {@param buffer} starts with {@param start}
453
- * @param {Buffer} buffer
454
- * @param {Buffer} start
455
- * @param {{ position: number }} position
456
- */
457
- function bufferStartsWith (buffer, start, position) {
458
- if (buffer.length < start.length) {
459
- return false
460
- }
461
-
462
- for (let i = 0; i < start.length; i++) {
463
- if (start[i] !== buffer[position.position + i]) {
464
- return false
465
- }
466
- }
467
-
468
- return true
469
- }
470
-
471
- module.exports = {
472
- multipartFormDataParser,
473
- validateBoundary
474
- }