@pnpm/exe 11.0.0-dev.1003 → 11.0.0-rc.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 (584) hide show
  1. package/dist/node-gyp-bin/node-gyp +6 -0
  2. package/dist/node-gyp-bin/node-gyp.cmd +5 -0
  3. package/dist/node_modules/@gar/promise-retry/LICENSE +20 -0
  4. package/dist/node_modules/@gar/promise-retry/lib/index.js +62 -0
  5. package/dist/node_modules/@gar/promise-retry/lib/retry.js +109 -0
  6. package/dist/node_modules/@gar/promise-retry/package.json +45 -0
  7. package/dist/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  8. package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  9. package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  10. package/dist/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  11. package/dist/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  12. package/dist/node_modules/@isaacs/fs-minipass/package.json +72 -0
  13. package/dist/node_modules/@npmcli/agent/lib/agents.js +206 -0
  14. package/dist/node_modules/@npmcli/agent/lib/dns.js +53 -0
  15. package/dist/node_modules/@npmcli/agent/lib/errors.js +61 -0
  16. package/dist/node_modules/@npmcli/agent/lib/index.js +56 -0
  17. package/dist/node_modules/@npmcli/agent/lib/options.js +86 -0
  18. package/dist/node_modules/@npmcli/agent/lib/proxy.js +88 -0
  19. package/dist/node_modules/@npmcli/agent/package.json +60 -0
  20. package/dist/node_modules/@npmcli/fs/lib/common/get-options.js +20 -0
  21. package/dist/node_modules/@npmcli/fs/lib/common/node.js +9 -0
  22. package/dist/node_modules/@npmcli/fs/lib/cp/LICENSE +15 -0
  23. package/dist/node_modules/@npmcli/fs/lib/cp/errors.js +129 -0
  24. package/dist/node_modules/@npmcli/fs/lib/cp/index.js +22 -0
  25. package/dist/node_modules/@npmcli/fs/lib/cp/polyfill.js +428 -0
  26. package/dist/node_modules/@npmcli/fs/lib/index.js +13 -0
  27. package/dist/node_modules/@npmcli/fs/lib/move-file.js +78 -0
  28. package/dist/node_modules/@npmcli/fs/lib/readdir-scoped.js +20 -0
  29. package/dist/node_modules/@npmcli/fs/lib/with-temp-dir.js +39 -0
  30. package/dist/node_modules/@npmcli/fs/package.json +54 -0
  31. package/dist/node_modules/@npmcli/redact/LICENSE +21 -0
  32. package/dist/node_modules/@npmcli/redact/lib/deep-map.js +71 -0
  33. package/dist/node_modules/@npmcli/redact/lib/error.js +28 -0
  34. package/dist/node_modules/@npmcli/redact/lib/index.js +44 -0
  35. package/dist/node_modules/@npmcli/redact/lib/matchers.js +88 -0
  36. package/dist/node_modules/@npmcli/redact/lib/server.js +59 -0
  37. package/dist/node_modules/@npmcli/redact/lib/utils.js +202 -0
  38. package/dist/node_modules/@npmcli/redact/package.json +52 -0
  39. package/dist/node_modules/abbrev/LICENSE +46 -0
  40. package/dist/node_modules/abbrev/lib/index.js +53 -0
  41. package/dist/node_modules/abbrev/package.json +41 -0
  42. package/dist/node_modules/agent-base/LICENSE +22 -0
  43. package/dist/node_modules/agent-base/dist/helpers.js +66 -0
  44. package/dist/node_modules/agent-base/dist/index.js +178 -0
  45. package/dist/node_modules/agent-base/package.json +46 -0
  46. package/dist/node_modules/balanced-match/dist/commonjs/index.js +59 -0
  47. package/dist/node_modules/balanced-match/dist/commonjs/package.json +3 -0
  48. package/dist/node_modules/balanced-match/dist/esm/index.js +54 -0
  49. package/dist/node_modules/balanced-match/dist/esm/package.json +3 -0
  50. package/dist/node_modules/balanced-match/package.json +68 -0
  51. package/dist/node_modules/brace-expansion/LICENSE +23 -0
  52. package/dist/node_modules/brace-expansion/dist/commonjs/index.js +201 -0
  53. package/dist/node_modules/brace-expansion/dist/commonjs/package.json +3 -0
  54. package/dist/node_modules/brace-expansion/dist/esm/index.js +197 -0
  55. package/dist/node_modules/brace-expansion/dist/esm/package.json +3 -0
  56. package/dist/node_modules/brace-expansion/package.json +64 -0
  57. package/dist/node_modules/cacache/lib/content/path.js +29 -0
  58. package/dist/node_modules/cacache/lib/content/read.js +165 -0
  59. package/dist/node_modules/cacache/lib/content/rm.js +18 -0
  60. package/dist/node_modules/cacache/lib/content/write.js +206 -0
  61. package/dist/node_modules/cacache/lib/entry-index.js +336 -0
  62. package/dist/node_modules/cacache/lib/get.js +170 -0
  63. package/dist/node_modules/cacache/lib/index.js +42 -0
  64. package/dist/node_modules/cacache/lib/memoization.js +72 -0
  65. package/dist/node_modules/cacache/lib/put.js +80 -0
  66. package/dist/node_modules/cacache/lib/rm.js +31 -0
  67. package/dist/node_modules/cacache/lib/util/glob.js +7 -0
  68. package/dist/node_modules/cacache/lib/util/hash-to-segments.js +7 -0
  69. package/dist/node_modules/cacache/lib/util/tmp.js +32 -0
  70. package/dist/node_modules/cacache/lib/verify.js +258 -0
  71. package/dist/node_modules/cacache/package.json +81 -0
  72. package/dist/node_modules/chownr/dist/commonjs/index.js +93 -0
  73. package/dist/node_modules/chownr/dist/commonjs/package.json +3 -0
  74. package/dist/node_modules/chownr/dist/esm/index.js +85 -0
  75. package/dist/node_modules/chownr/dist/esm/package.json +3 -0
  76. package/dist/node_modules/chownr/package.json +69 -0
  77. package/dist/node_modules/debug/LICENSE +20 -0
  78. package/dist/node_modules/debug/package.json +64 -0
  79. package/dist/node_modules/debug/src/browser.js +272 -0
  80. package/dist/node_modules/debug/src/common.js +292 -0
  81. package/dist/node_modules/debug/src/index.js +10 -0
  82. package/dist/node_modules/debug/src/node.js +263 -0
  83. package/dist/node_modules/env-paths/index.js +74 -0
  84. package/dist/node_modules/env-paths/license +9 -0
  85. package/dist/node_modules/env-paths/package.json +45 -0
  86. package/dist/node_modules/exponential-backoff/LICENSE +202 -0
  87. package/dist/node_modules/exponential-backoff/dist/backoff.js +124 -0
  88. package/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js +25 -0
  89. package/dist/node_modules/exponential-backoff/dist/delay/delay.base.js +45 -0
  90. package/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js +17 -0
  91. package/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js +3 -0
  92. package/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js +82 -0
  93. package/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js +8 -0
  94. package/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js +15 -0
  95. package/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js +7 -0
  96. package/dist/node_modules/exponential-backoff/dist/options.js +31 -0
  97. package/dist/node_modules/exponential-backoff/package.json +62 -0
  98. package/dist/node_modules/fdir/LICENSE +7 -0
  99. package/dist/node_modules/fdir/dist/index.cjs +588 -0
  100. package/dist/node_modules/fdir/dist/index.d.cts +155 -0
  101. package/dist/node_modules/fdir/dist/index.d.mts +155 -0
  102. package/dist/node_modules/fdir/dist/index.mjs +570 -0
  103. package/dist/node_modules/fdir/package.json +103 -0
  104. package/dist/node_modules/fs-minipass/LICENSE +15 -0
  105. package/dist/node_modules/fs-minipass/lib/index.js +443 -0
  106. package/dist/node_modules/fs-minipass/package.json +54 -0
  107. package/dist/node_modules/glob/dist/commonjs/glob.js +248 -0
  108. package/dist/node_modules/glob/dist/commonjs/has-magic.js +27 -0
  109. package/dist/node_modules/glob/dist/commonjs/ignore.js +119 -0
  110. package/dist/node_modules/glob/dist/commonjs/index.js +68 -0
  111. package/dist/node_modules/glob/dist/commonjs/index.min.js +4 -0
  112. package/dist/node_modules/glob/dist/commonjs/package.json +3 -0
  113. package/dist/node_modules/glob/dist/commonjs/pattern.js +223 -0
  114. package/dist/node_modules/glob/dist/commonjs/processor.js +301 -0
  115. package/dist/node_modules/glob/dist/commonjs/walker.js +387 -0
  116. package/dist/node_modules/glob/dist/esm/glob.js +244 -0
  117. package/dist/node_modules/glob/dist/esm/has-magic.js +23 -0
  118. package/dist/node_modules/glob/dist/esm/ignore.js +115 -0
  119. package/dist/node_modules/glob/dist/esm/index.js +55 -0
  120. package/dist/node_modules/glob/dist/esm/index.min.js +4 -0
  121. package/dist/node_modules/glob/dist/esm/package.json +3 -0
  122. package/dist/node_modules/glob/dist/esm/pattern.js +219 -0
  123. package/dist/node_modules/glob/dist/esm/processor.js +294 -0
  124. package/dist/node_modules/glob/dist/esm/walker.js +381 -0
  125. package/dist/node_modules/glob/package.json +98 -0
  126. package/dist/node_modules/graceful-fs/LICENSE +15 -0
  127. package/dist/node_modules/graceful-fs/clone.js +23 -0
  128. package/dist/node_modules/graceful-fs/graceful-fs.js +448 -0
  129. package/dist/node_modules/graceful-fs/legacy-streams.js +118 -0
  130. package/dist/node_modules/graceful-fs/package.json +53 -0
  131. package/dist/node_modules/graceful-fs/polyfills.js +355 -0
  132. package/dist/node_modules/http-cache-semantics/LICENSE +9 -0
  133. package/dist/node_modules/http-cache-semantics/index.js +928 -0
  134. package/dist/node_modules/http-cache-semantics/package.json +22 -0
  135. package/dist/node_modules/http-proxy-agent/LICENSE +22 -0
  136. package/dist/node_modules/http-proxy-agent/dist/index.js +148 -0
  137. package/dist/node_modules/http-proxy-agent/package.json +47 -0
  138. package/dist/node_modules/https-proxy-agent/LICENSE +22 -0
  139. package/dist/node_modules/https-proxy-agent/dist/index.js +180 -0
  140. package/dist/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
  141. package/dist/node_modules/https-proxy-agent/package.json +50 -0
  142. package/dist/node_modules/iconv-lite/LICENSE +21 -0
  143. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  144. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  145. package/dist/node_modules/iconv-lite/encodings/index.js +23 -0
  146. package/dist/node_modules/iconv-lite/encodings/internal.js +218 -0
  147. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  148. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  149. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
  150. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  151. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  152. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  153. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  154. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  155. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  156. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  157. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  158. package/dist/node_modules/iconv-lite/encodings/utf16.js +187 -0
  159. package/dist/node_modules/iconv-lite/encodings/utf32.js +307 -0
  160. package/dist/node_modules/iconv-lite/encodings/utf7.js +283 -0
  161. package/dist/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  162. package/dist/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  163. package/dist/node_modules/iconv-lite/lib/index.js +182 -0
  164. package/dist/node_modules/iconv-lite/lib/streams.js +105 -0
  165. package/dist/node_modules/iconv-lite/package.json +70 -0
  166. package/dist/node_modules/ip-address/LICENSE +19 -0
  167. package/dist/node_modules/ip-address/dist/address-error.js +12 -0
  168. package/dist/node_modules/ip-address/dist/common.js +46 -0
  169. package/dist/node_modules/ip-address/dist/ip-address.js +35 -0
  170. package/dist/node_modules/ip-address/dist/ipv4.js +360 -0
  171. package/dist/node_modules/ip-address/dist/ipv6.js +1003 -0
  172. package/dist/node_modules/ip-address/dist/v4/constants.js +8 -0
  173. package/dist/node_modules/ip-address/dist/v6/constants.js +76 -0
  174. package/dist/node_modules/ip-address/dist/v6/helpers.js +45 -0
  175. package/dist/node_modules/ip-address/dist/v6/regular-expressions.js +95 -0
  176. package/dist/node_modules/ip-address/package.json +78 -0
  177. package/dist/node_modules/isexe/dist/commonjs/index.js +56 -0
  178. package/dist/node_modules/isexe/dist/commonjs/index.min.js +2 -0
  179. package/dist/node_modules/isexe/dist/commonjs/options.js +3 -0
  180. package/dist/node_modules/isexe/dist/commonjs/package.json +3 -0
  181. package/dist/node_modules/isexe/dist/commonjs/posix.js +67 -0
  182. package/dist/node_modules/isexe/dist/commonjs/win32.js +63 -0
  183. package/dist/node_modules/isexe/dist/esm/index.js +16 -0
  184. package/dist/node_modules/isexe/dist/esm/index.min.js +2 -0
  185. package/dist/node_modules/isexe/dist/esm/options.js +2 -0
  186. package/dist/node_modules/isexe/dist/esm/package.json +3 -0
  187. package/dist/node_modules/isexe/dist/esm/posix.js +62 -0
  188. package/dist/node_modules/isexe/dist/esm/win32.js +58 -0
  189. package/dist/node_modules/isexe/package.json +78 -0
  190. package/dist/node_modules/lru-cache/dist/commonjs/index.js +1595 -0
  191. package/dist/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
  192. package/dist/node_modules/lru-cache/dist/commonjs/package.json +3 -0
  193. package/dist/node_modules/lru-cache/dist/esm/index.js +1591 -0
  194. package/dist/node_modules/lru-cache/dist/esm/index.min.js +2 -0
  195. package/dist/node_modules/lru-cache/dist/esm/package.json +3 -0
  196. package/dist/node_modules/lru-cache/package.json +93 -0
  197. package/dist/node_modules/make-fetch-happen/LICENSE +16 -0
  198. package/dist/node_modules/make-fetch-happen/lib/cache/entry.js +471 -0
  199. package/dist/node_modules/make-fetch-happen/lib/cache/errors.js +11 -0
  200. package/dist/node_modules/make-fetch-happen/lib/cache/index.js +49 -0
  201. package/dist/node_modules/make-fetch-happen/lib/cache/key.js +17 -0
  202. package/dist/node_modules/make-fetch-happen/lib/cache/policy.js +161 -0
  203. package/dist/node_modules/make-fetch-happen/lib/fetch.js +118 -0
  204. package/dist/node_modules/make-fetch-happen/lib/index.js +41 -0
  205. package/dist/node_modules/make-fetch-happen/lib/options.js +59 -0
  206. package/dist/node_modules/make-fetch-happen/lib/pipeline.js +41 -0
  207. package/dist/node_modules/make-fetch-happen/lib/remote.js +134 -0
  208. package/dist/node_modules/make-fetch-happen/package.json +75 -0
  209. package/dist/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +14 -0
  210. package/dist/node_modules/minimatch/dist/commonjs/ast.js +846 -0
  211. package/dist/node_modules/minimatch/dist/commonjs/brace-expressions.js +150 -0
  212. package/dist/node_modules/minimatch/dist/commonjs/escape.js +30 -0
  213. package/dist/node_modules/minimatch/dist/commonjs/index.js +1121 -0
  214. package/dist/node_modules/minimatch/dist/commonjs/package.json +3 -0
  215. package/dist/node_modules/minimatch/dist/commonjs/unescape.js +38 -0
  216. package/dist/node_modules/minimatch/dist/esm/assert-valid-pattern.js +10 -0
  217. package/dist/node_modules/minimatch/dist/esm/ast.js +842 -0
  218. package/dist/node_modules/minimatch/dist/esm/brace-expressions.js +146 -0
  219. package/dist/node_modules/minimatch/dist/esm/escape.js +26 -0
  220. package/dist/node_modules/minimatch/dist/esm/index.js +1108 -0
  221. package/dist/node_modules/minimatch/dist/esm/package.json +3 -0
  222. package/dist/node_modules/minimatch/dist/esm/unescape.js +34 -0
  223. package/dist/node_modules/minimatch/package.json +67 -0
  224. package/dist/node_modules/minipass/dist/commonjs/index.js +1038 -0
  225. package/dist/node_modules/minipass/dist/commonjs/package.json +3 -0
  226. package/dist/node_modules/minipass/dist/esm/index.js +1020 -0
  227. package/dist/node_modules/minipass/dist/esm/package.json +3 -0
  228. package/dist/node_modules/minipass/package.json +77 -0
  229. package/dist/node_modules/minipass-collect/LICENSE +15 -0
  230. package/dist/node_modules/minipass-collect/index.js +71 -0
  231. package/dist/node_modules/minipass-collect/package.json +30 -0
  232. package/dist/node_modules/minipass-fetch/LICENSE +28 -0
  233. package/dist/node_modules/minipass-fetch/lib/abort-error.js +17 -0
  234. package/dist/node_modules/minipass-fetch/lib/blob.js +97 -0
  235. package/dist/node_modules/minipass-fetch/lib/body.js +360 -0
  236. package/dist/node_modules/minipass-fetch/lib/fetch-error.js +32 -0
  237. package/dist/node_modules/minipass-fetch/lib/headers.js +267 -0
  238. package/dist/node_modules/minipass-fetch/lib/index.js +376 -0
  239. package/dist/node_modules/minipass-fetch/lib/request.js +282 -0
  240. package/dist/node_modules/minipass-fetch/lib/response.js +90 -0
  241. package/dist/node_modules/minipass-fetch/package.json +70 -0
  242. package/dist/node_modules/minipass-flush/LICENSE +15 -0
  243. package/dist/node_modules/minipass-flush/index.js +39 -0
  244. package/dist/node_modules/minipass-flush/node_modules/minipass/LICENSE +15 -0
  245. package/dist/node_modules/minipass-flush/node_modules/minipass/index.js +649 -0
  246. package/dist/node_modules/minipass-flush/node_modules/minipass/package.json +56 -0
  247. package/dist/node_modules/minipass-flush/package.json +39 -0
  248. package/dist/node_modules/minipass-pipeline/LICENSE +15 -0
  249. package/dist/node_modules/minipass-pipeline/index.js +128 -0
  250. package/dist/node_modules/minipass-pipeline/node_modules/minipass/LICENSE +15 -0
  251. package/dist/node_modules/minipass-pipeline/node_modules/minipass/index.js +649 -0
  252. package/dist/node_modules/minipass-pipeline/node_modules/minipass/package.json +56 -0
  253. package/dist/node_modules/minipass-pipeline/package.json +29 -0
  254. package/dist/node_modules/minipass-sized/LICENSE +15 -0
  255. package/dist/node_modules/minipass-sized/dist/commonjs/index.js +69 -0
  256. package/dist/node_modules/minipass-sized/dist/commonjs/package.json +3 -0
  257. package/dist/node_modules/minipass-sized/dist/esm/index.js +64 -0
  258. package/dist/node_modules/minipass-sized/dist/esm/package.json +3 -0
  259. package/dist/node_modules/minipass-sized/package.json +69 -0
  260. package/dist/node_modules/minizlib/LICENSE +26 -0
  261. package/dist/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  262. package/dist/node_modules/minizlib/dist/commonjs/index.js +416 -0
  263. package/dist/node_modules/minizlib/dist/commonjs/package.json +3 -0
  264. package/dist/node_modules/minizlib/dist/esm/constants.js +117 -0
  265. package/dist/node_modules/minizlib/dist/esm/index.js +363 -0
  266. package/dist/node_modules/minizlib/dist/esm/package.json +3 -0
  267. package/dist/node_modules/minizlib/package.json +80 -0
  268. package/dist/node_modules/ms/index.js +162 -0
  269. package/dist/node_modules/ms/package.json +38 -0
  270. package/dist/node_modules/negotiator/LICENSE +24 -0
  271. package/dist/node_modules/negotiator/index.js +83 -0
  272. package/dist/node_modules/negotiator/lib/charset.js +169 -0
  273. package/dist/node_modules/negotiator/lib/encoding.js +205 -0
  274. package/dist/node_modules/negotiator/lib/language.js +179 -0
  275. package/dist/node_modules/negotiator/lib/mediaType.js +294 -0
  276. package/dist/node_modules/negotiator/package.json +43 -0
  277. package/dist/node_modules/node-gyp/.release-please-manifest.json +3 -0
  278. package/dist/node_modules/node-gyp/LICENSE +24 -0
  279. package/dist/node_modules/node-gyp/addon.gypi +204 -0
  280. package/dist/node_modules/node-gyp/bin/node-gyp.js +145 -0
  281. package/dist/node_modules/node-gyp/eslint.config.js +3 -0
  282. package/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
  283. package/dist/node_modules/node-gyp/gyp/LICENSE +28 -0
  284. package/dist/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
  285. package/dist/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
  286. package/dist/node_modules/node-gyp/gyp/gyp +8 -0
  287. package/dist/node_modules/node-gyp/gyp/gyp.bat +5 -0
  288. package/dist/node_modules/node-gyp/gyp/gyp_main.py +45 -0
  289. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
  290. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
  291. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1283 -0
  292. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1545 -0
  293. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
  294. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +152 -0
  295. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +270 -0
  296. package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +599 -0
  297. package/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +707 -0
  298. package/dist/node_modules/node-gyp/gyp/pylib/gyp/common.py +725 -0
  299. package/dist/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +186 -0
  300. package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +170 -0
  301. package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
  302. package/dist/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
  303. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  304. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +805 -0
  305. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1169 -0
  306. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1316 -0
  307. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +128 -0
  308. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +104 -0
  309. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
  310. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +88 -0
  311. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +55 -0
  312. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2755 -0
  313. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3970 -0
  314. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
  315. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2956 -0
  316. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +67 -0
  317. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1389 -0
  318. package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +26 -0
  319. package/dist/node_modules/node-gyp/gyp/pylib/gyp/input.py +3097 -0
  320. package/dist/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +99 -0
  321. package/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +765 -0
  322. package/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1255 -0
  323. package/dist/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
  324. package/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
  325. package/dist/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +371 -0
  326. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1936 -0
  327. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +54 -0
  328. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +301 -0
  329. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3180 -0
  330. package/dist/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +64 -0
  331. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
  332. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
  333. package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
  334. package/dist/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
  335. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +107 -0
  336. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
  337. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
  338. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
  339. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
  340. package/dist/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
  341. package/dist/node_modules/node-gyp/gyp/pylib/packaging/markers.py +251 -0
  342. package/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +824 -0
  343. package/dist/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  344. package/dist/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
  345. package/dist/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
  346. package/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +553 -0
  347. package/dist/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
  348. package/dist/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
  349. package/dist/node_modules/node-gyp/gyp/pyproject.toml +114 -0
  350. package/dist/node_modules/node-gyp/gyp/release-please-config.json +11 -0
  351. package/dist/node_modules/node-gyp/gyp/test_gyp.py +260 -0
  352. package/dist/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
  353. package/dist/node_modules/node-gyp/lib/build.js +230 -0
  354. package/dist/node_modules/node-gyp/lib/clean.js +15 -0
  355. package/dist/node_modules/node-gyp/lib/configure.js +328 -0
  356. package/dist/node_modules/node-gyp/lib/create-config-gypi.js +153 -0
  357. package/dist/node_modules/node-gyp/lib/download.js +39 -0
  358. package/dist/node_modules/node-gyp/lib/find-node-directory.js +63 -0
  359. package/dist/node_modules/node-gyp/lib/find-python.js +304 -0
  360. package/dist/node_modules/node-gyp/lib/find-visualstudio.js +606 -0
  361. package/dist/node_modules/node-gyp/lib/install.js +411 -0
  362. package/dist/node_modules/node-gyp/lib/list.js +26 -0
  363. package/dist/node_modules/node-gyp/lib/log.js +168 -0
  364. package/dist/node_modules/node-gyp/lib/node-gyp.js +199 -0
  365. package/dist/node_modules/node-gyp/lib/process-release.js +146 -0
  366. package/dist/node_modules/node-gyp/lib/rebuild.js +12 -0
  367. package/dist/node_modules/node-gyp/lib/remove.js +43 -0
  368. package/dist/node_modules/node-gyp/lib/util.js +81 -0
  369. package/dist/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
  370. package/dist/node_modules/node-gyp/package.json +52 -0
  371. package/dist/node_modules/node-gyp/release-please-config.json +40 -0
  372. package/dist/node_modules/node-gyp/src/win_delay_load_hook.cc +41 -0
  373. package/dist/node_modules/nopt/LICENSE +15 -0
  374. package/dist/node_modules/nopt/bin/nopt.js +29 -0
  375. package/dist/node_modules/nopt/lib/debug.js +5 -0
  376. package/dist/node_modules/nopt/lib/nopt-lib.js +514 -0
  377. package/dist/node_modules/nopt/lib/nopt.js +34 -0
  378. package/dist/node_modules/nopt/lib/type-defs.js +91 -0
  379. package/dist/node_modules/nopt/package.json +52 -0
  380. package/dist/node_modules/p-map/index.js +283 -0
  381. package/dist/node_modules/p-map/license +9 -0
  382. package/dist/node_modules/p-map/package.json +57 -0
  383. package/dist/node_modules/path-scurry/dist/commonjs/index.js +2018 -0
  384. package/dist/node_modules/path-scurry/dist/commonjs/package.json +3 -0
  385. package/dist/node_modules/path-scurry/dist/esm/index.js +1983 -0
  386. package/dist/node_modules/path-scurry/dist/esm/package.json +3 -0
  387. package/dist/node_modules/path-scurry/package.json +72 -0
  388. package/dist/node_modules/picomatch/LICENSE +21 -0
  389. package/dist/node_modules/picomatch/index.js +17 -0
  390. package/dist/node_modules/picomatch/lib/constants.js +184 -0
  391. package/dist/node_modules/picomatch/lib/parse.js +1386 -0
  392. package/dist/node_modules/picomatch/lib/picomatch.js +349 -0
  393. package/dist/node_modules/picomatch/lib/scan.js +391 -0
  394. package/dist/node_modules/picomatch/lib/utils.js +72 -0
  395. package/dist/node_modules/picomatch/package.json +82 -0
  396. package/dist/node_modules/picomatch/posix.js +3 -0
  397. package/dist/node_modules/proc-log/LICENSE +15 -0
  398. package/dist/node_modules/proc-log/lib/index.js +158 -0
  399. package/dist/node_modules/proc-log/package.json +46 -0
  400. package/dist/node_modules/safer-buffer/LICENSE +21 -0
  401. package/dist/node_modules/safer-buffer/dangerous.js +58 -0
  402. package/dist/node_modules/safer-buffer/package.json +34 -0
  403. package/dist/node_modules/safer-buffer/safer.js +77 -0
  404. package/dist/node_modules/safer-buffer/tests.js +406 -0
  405. package/dist/node_modules/semver/LICENSE +15 -0
  406. package/dist/node_modules/semver/bin/semver.js +191 -0
  407. package/dist/node_modules/semver/classes/comparator.js +143 -0
  408. package/dist/node_modules/semver/classes/index.js +7 -0
  409. package/dist/node_modules/semver/classes/range.js +557 -0
  410. package/dist/node_modules/semver/classes/semver.js +333 -0
  411. package/dist/node_modules/semver/functions/clean.js +8 -0
  412. package/dist/node_modules/semver/functions/cmp.js +54 -0
  413. package/dist/node_modules/semver/functions/coerce.js +62 -0
  414. package/dist/node_modules/semver/functions/compare-build.js +9 -0
  415. package/dist/node_modules/semver/functions/compare-loose.js +5 -0
  416. package/dist/node_modules/semver/functions/compare.js +7 -0
  417. package/dist/node_modules/semver/functions/diff.js +60 -0
  418. package/dist/node_modules/semver/functions/eq.js +5 -0
  419. package/dist/node_modules/semver/functions/gt.js +5 -0
  420. package/dist/node_modules/semver/functions/gte.js +5 -0
  421. package/dist/node_modules/semver/functions/inc.js +21 -0
  422. package/dist/node_modules/semver/functions/lt.js +5 -0
  423. package/dist/node_modules/semver/functions/lte.js +5 -0
  424. package/dist/node_modules/semver/functions/major.js +5 -0
  425. package/dist/node_modules/semver/functions/minor.js +5 -0
  426. package/dist/node_modules/semver/functions/neq.js +5 -0
  427. package/dist/node_modules/semver/functions/parse.js +18 -0
  428. package/dist/node_modules/semver/functions/patch.js +5 -0
  429. package/dist/node_modules/semver/functions/prerelease.js +8 -0
  430. package/dist/node_modules/semver/functions/rcompare.js +5 -0
  431. package/dist/node_modules/semver/functions/rsort.js +5 -0
  432. package/dist/node_modules/semver/functions/satisfies.js +12 -0
  433. package/dist/node_modules/semver/functions/sort.js +5 -0
  434. package/dist/node_modules/semver/functions/valid.js +8 -0
  435. package/dist/node_modules/semver/index.js +91 -0
  436. package/dist/node_modules/semver/internal/constants.js +37 -0
  437. package/dist/node_modules/semver/internal/debug.js +11 -0
  438. package/dist/node_modules/semver/internal/identifiers.js +29 -0
  439. package/dist/node_modules/semver/internal/lrucache.js +42 -0
  440. package/dist/node_modules/semver/internal/parse-options.js +17 -0
  441. package/dist/node_modules/semver/internal/re.js +223 -0
  442. package/dist/node_modules/semver/package.json +78 -0
  443. package/dist/node_modules/semver/preload.js +4 -0
  444. package/dist/node_modules/semver/range.bnf +16 -0
  445. package/dist/node_modules/semver/ranges/gtr.js +6 -0
  446. package/dist/node_modules/semver/ranges/intersects.js +9 -0
  447. package/dist/node_modules/semver/ranges/ltr.js +6 -0
  448. package/dist/node_modules/semver/ranges/max-satisfying.js +27 -0
  449. package/dist/node_modules/semver/ranges/min-satisfying.js +26 -0
  450. package/dist/node_modules/semver/ranges/min-version.js +63 -0
  451. package/dist/node_modules/semver/ranges/outside.js +82 -0
  452. package/dist/node_modules/semver/ranges/simplify.js +49 -0
  453. package/dist/node_modules/semver/ranges/subset.js +249 -0
  454. package/dist/node_modules/semver/ranges/to-comparators.js +10 -0
  455. package/dist/node_modules/semver/ranges/valid.js +13 -0
  456. package/dist/node_modules/smart-buffer/.prettierrc.yaml +5 -0
  457. package/dist/node_modules/smart-buffer/LICENSE +20 -0
  458. package/dist/node_modules/smart-buffer/build/smartbuffer.js +1233 -0
  459. package/dist/node_modules/smart-buffer/build/utils.js +108 -0
  460. package/dist/node_modules/smart-buffer/package.json +79 -0
  461. package/dist/node_modules/socks/.eslintrc.cjs +11 -0
  462. package/dist/node_modules/socks/.prettierrc.yaml +7 -0
  463. package/dist/node_modules/socks/LICENSE +20 -0
  464. package/dist/node_modules/socks/build/client/socksclient.js +793 -0
  465. package/dist/node_modules/socks/build/common/constants.js +108 -0
  466. package/dist/node_modules/socks/build/common/helpers.js +167 -0
  467. package/dist/node_modules/socks/build/common/receivebuffer.js +43 -0
  468. package/dist/node_modules/socks/build/common/util.js +25 -0
  469. package/dist/node_modules/socks/build/index.js +18 -0
  470. package/dist/node_modules/socks/package.json +58 -0
  471. package/dist/node_modules/socks-proxy-agent/LICENSE +22 -0
  472. package/dist/node_modules/socks-proxy-agent/dist/index.js +195 -0
  473. package/dist/node_modules/socks-proxy-agent/package.json +142 -0
  474. package/dist/node_modules/ssri/lib/index.js +550 -0
  475. package/dist/node_modules/ssri/package.json +66 -0
  476. package/dist/node_modules/tar/dist/commonjs/create.js +82 -0
  477. package/dist/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  478. package/dist/node_modules/tar/dist/commonjs/extract.js +88 -0
  479. package/dist/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  480. package/dist/node_modules/tar/dist/commonjs/header.js +312 -0
  481. package/dist/node_modules/tar/dist/commonjs/index.js +64 -0
  482. package/dist/node_modules/tar/dist/commonjs/index.min.js +4 -0
  483. package/dist/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  484. package/dist/node_modules/tar/dist/commonjs/list.js +145 -0
  485. package/dist/node_modules/tar/dist/commonjs/make-command.js +52 -0
  486. package/dist/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  487. package/dist/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  488. package/dist/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  489. package/dist/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  490. package/dist/node_modules/tar/dist/commonjs/options.js +66 -0
  491. package/dist/node_modules/tar/dist/commonjs/pack.js +511 -0
  492. package/dist/node_modules/tar/dist/commonjs/package.json +3 -0
  493. package/dist/node_modules/tar/dist/commonjs/parse.js +610 -0
  494. package/dist/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  495. package/dist/node_modules/tar/dist/commonjs/pax.js +158 -0
  496. package/dist/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  497. package/dist/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  498. package/dist/node_modules/tar/dist/commonjs/replace.js +227 -0
  499. package/dist/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  500. package/dist/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  501. package/dist/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  502. package/dist/node_modules/tar/dist/commonjs/types.js +50 -0
  503. package/dist/node_modules/tar/dist/commonjs/unpack.js +932 -0
  504. package/dist/node_modules/tar/dist/commonjs/update.js +33 -0
  505. package/dist/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  506. package/dist/node_modules/tar/dist/commonjs/winchars.js +14 -0
  507. package/dist/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  508. package/dist/node_modules/tar/dist/esm/create.js +76 -0
  509. package/dist/node_modules/tar/dist/esm/cwd-error.js +14 -0
  510. package/dist/node_modules/tar/dist/esm/extract.js +49 -0
  511. package/dist/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  512. package/dist/node_modules/tar/dist/esm/header.js +275 -0
  513. package/dist/node_modules/tar/dist/esm/index.js +20 -0
  514. package/dist/node_modules/tar/dist/esm/index.min.js +4 -0
  515. package/dist/node_modules/tar/dist/esm/large-numbers.js +94 -0
  516. package/dist/node_modules/tar/dist/esm/list.js +105 -0
  517. package/dist/node_modules/tar/dist/esm/make-command.js +48 -0
  518. package/dist/node_modules/tar/dist/esm/mkdir.js +179 -0
  519. package/dist/node_modules/tar/dist/esm/mode-fix.js +25 -0
  520. package/dist/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  521. package/dist/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  522. package/dist/node_modules/tar/dist/esm/options.js +54 -0
  523. package/dist/node_modules/tar/dist/esm/pack.js +469 -0
  524. package/dist/node_modules/tar/dist/esm/package.json +3 -0
  525. package/dist/node_modules/tar/dist/esm/parse.js +606 -0
  526. package/dist/node_modules/tar/dist/esm/path-reservations.js +166 -0
  527. package/dist/node_modules/tar/dist/esm/pax.js +154 -0
  528. package/dist/node_modules/tar/dist/esm/process-umask.js +3 -0
  529. package/dist/node_modules/tar/dist/esm/read-entry.js +132 -0
  530. package/dist/node_modules/tar/dist/esm/replace.js +221 -0
  531. package/dist/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  532. package/dist/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  533. package/dist/node_modules/tar/dist/esm/symlink-error.js +15 -0
  534. package/dist/node_modules/tar/dist/esm/types.js +45 -0
  535. package/dist/node_modules/tar/dist/esm/unpack.js +891 -0
  536. package/dist/node_modules/tar/dist/esm/update.js +30 -0
  537. package/dist/node_modules/tar/dist/esm/warn-method.js +27 -0
  538. package/dist/node_modules/tar/dist/esm/winchars.js +9 -0
  539. package/dist/node_modules/tar/dist/esm/write-entry.js +656 -0
  540. package/dist/node_modules/tar/node_modules/yallist/dist/commonjs/index.js +384 -0
  541. package/dist/node_modules/tar/node_modules/yallist/dist/commonjs/package.json +3 -0
  542. package/dist/node_modules/tar/node_modules/yallist/dist/esm/index.js +379 -0
  543. package/dist/node_modules/tar/node_modules/yallist/dist/esm/package.json +3 -0
  544. package/dist/node_modules/tar/node_modules/yallist/package.json +68 -0
  545. package/dist/node_modules/tar/package.json +297 -0
  546. package/dist/node_modules/tinyglobby/LICENSE +21 -0
  547. package/dist/node_modules/tinyglobby/dist/index.cjs +350 -0
  548. package/dist/node_modules/tinyglobby/dist/index.d.cts +147 -0
  549. package/dist/node_modules/tinyglobby/dist/index.d.mts +147 -0
  550. package/dist/node_modules/tinyglobby/dist/index.mjs +318 -0
  551. package/dist/node_modules/tinyglobby/package.json +73 -0
  552. package/{LICENSE → dist/node_modules/v8-compile-cache/LICENSE} +1 -2
  553. package/dist/node_modules/v8-compile-cache/package.json +34 -0
  554. package/dist/node_modules/v8-compile-cache/v8-compile-cache.js +373 -0
  555. package/dist/node_modules/which/LICENSE +15 -0
  556. package/dist/node_modules/which/bin/which.js +52 -0
  557. package/dist/node_modules/which/lib/index.js +111 -0
  558. package/dist/node_modules/which/package.json +52 -0
  559. package/dist/node_modules/yallist/LICENSE +15 -0
  560. package/dist/node_modules/yallist/iterator.js +8 -0
  561. package/dist/node_modules/yallist/package.json +29 -0
  562. package/dist/node_modules/yallist/yallist.js +426 -0
  563. package/dist/pnpm.mjs +266382 -0
  564. package/dist/pnpmrc +2 -0
  565. package/dist/templates/completion.bash +31 -0
  566. package/dist/templates/completion.fish +22 -0
  567. package/dist/templates/completion.ps1 +193 -0
  568. package/dist/templates/completion.zsh +27 -0
  569. package/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  570. package/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  571. package/dist/worker.js +10958 -0
  572. package/package.json +34 -12
  573. package/pn +2 -0
  574. package/pn.cmd +2 -0
  575. package/pn.ps1 +1 -0
  576. package/pnpx +2 -0
  577. package/pnpx.cmd +2 -0
  578. package/pnpx.ps1 +1 -0
  579. package/pnx +2 -0
  580. package/pnx.cmd +2 -0
  581. package/pnx.ps1 +1 -0
  582. package/prepare.js +26 -3
  583. package/setup.js +22 -11
  584. package/CHANGELOG.md +0 -15
@@ -0,0 +1,1003 @@
1
+ "use strict";
2
+ /* eslint-disable prefer-destructuring */
3
+ /* eslint-disable no-param-reassign */
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.Address6 = void 0;
29
+ const common = __importStar(require("./common"));
30
+ const constants4 = __importStar(require("./v4/constants"));
31
+ const constants6 = __importStar(require("./v6/constants"));
32
+ const helpers = __importStar(require("./v6/helpers"));
33
+ const ipv4_1 = require("./ipv4");
34
+ const regular_expressions_1 = require("./v6/regular-expressions");
35
+ const address_error_1 = require("./address-error");
36
+ const common_1 = require("./common");
37
+ function assert(condition) {
38
+ if (!condition) {
39
+ throw new Error('Assertion failed.');
40
+ }
41
+ }
42
+ function addCommas(number) {
43
+ const r = /(\d+)(\d{3})/;
44
+ while (r.test(number)) {
45
+ number = number.replace(r, '$1,$2');
46
+ }
47
+ return number;
48
+ }
49
+ function spanLeadingZeroes4(n) {
50
+ n = n.replace(/^(0{1,})([1-9]+)$/, '<span class="parse-error">$1</span>$2');
51
+ n = n.replace(/^(0{1,})(0)$/, '<span class="parse-error">$1</span>$2');
52
+ return n;
53
+ }
54
+ /*
55
+ * A helper function to compact an array
56
+ */
57
+ function compact(address, slice) {
58
+ const s1 = [];
59
+ const s2 = [];
60
+ let i;
61
+ for (i = 0; i < address.length; i++) {
62
+ if (i < slice[0]) {
63
+ s1.push(address[i]);
64
+ }
65
+ else if (i > slice[1]) {
66
+ s2.push(address[i]);
67
+ }
68
+ }
69
+ return s1.concat(['compact']).concat(s2);
70
+ }
71
+ function paddedHex(octet) {
72
+ return parseInt(octet, 16).toString(16).padStart(4, '0');
73
+ }
74
+ function unsignByte(b) {
75
+ // eslint-disable-next-line no-bitwise
76
+ return b & 0xff;
77
+ }
78
+ /**
79
+ * Represents an IPv6 address
80
+ * @class Address6
81
+ * @param {string} address - An IPv6 address string
82
+ * @param {number} [groups=8] - How many octets to parse
83
+ * @example
84
+ * var address = new Address6('2001::/32');
85
+ */
86
+ class Address6 {
87
+ constructor(address, optionalGroups) {
88
+ this.addressMinusSuffix = '';
89
+ this.parsedSubnet = '';
90
+ this.subnet = '/128';
91
+ this.subnetMask = 128;
92
+ this.v4 = false;
93
+ this.zone = '';
94
+ // #region Attributes
95
+ /**
96
+ * Returns true if the given address is in the subnet of the current address
97
+ * @memberof Address6
98
+ * @instance
99
+ * @returns {boolean}
100
+ */
101
+ this.isInSubnet = common.isInSubnet;
102
+ /**
103
+ * Returns true if the address is correct, false otherwise
104
+ * @memberof Address6
105
+ * @instance
106
+ * @returns {boolean}
107
+ */
108
+ this.isCorrect = common.isCorrect(constants6.BITS);
109
+ if (optionalGroups === undefined) {
110
+ this.groups = constants6.GROUPS;
111
+ }
112
+ else {
113
+ this.groups = optionalGroups;
114
+ }
115
+ this.address = address;
116
+ const subnet = constants6.RE_SUBNET_STRING.exec(address);
117
+ if (subnet) {
118
+ this.parsedSubnet = subnet[0].replace('/', '');
119
+ this.subnetMask = parseInt(this.parsedSubnet, 10);
120
+ this.subnet = `/${this.subnetMask}`;
121
+ if (Number.isNaN(this.subnetMask) ||
122
+ this.subnetMask < 0 ||
123
+ this.subnetMask > constants6.BITS) {
124
+ throw new address_error_1.AddressError('Invalid subnet mask.');
125
+ }
126
+ address = address.replace(constants6.RE_SUBNET_STRING, '');
127
+ }
128
+ else if (/\//.test(address)) {
129
+ throw new address_error_1.AddressError('Invalid subnet mask.');
130
+ }
131
+ const zone = constants6.RE_ZONE_STRING.exec(address);
132
+ if (zone) {
133
+ this.zone = zone[0];
134
+ address = address.replace(constants6.RE_ZONE_STRING, '');
135
+ }
136
+ this.addressMinusSuffix = address;
137
+ this.parsedAddress = this.parse(this.addressMinusSuffix);
138
+ }
139
+ static isValid(address) {
140
+ try {
141
+ // eslint-disable-next-line no-new
142
+ new Address6(address);
143
+ return true;
144
+ }
145
+ catch (e) {
146
+ return false;
147
+ }
148
+ }
149
+ /**
150
+ * Convert a BigInt to a v6 address object
151
+ * @memberof Address6
152
+ * @static
153
+ * @param {bigint} bigInt - a BigInt to convert
154
+ * @returns {Address6}
155
+ * @example
156
+ * var bigInt = BigInt('1000000000000');
157
+ * var address = Address6.fromBigInt(bigInt);
158
+ * address.correctForm(); // '::e8:d4a5:1000'
159
+ */
160
+ static fromBigInt(bigInt) {
161
+ const hex = bigInt.toString(16).padStart(32, '0');
162
+ const groups = [];
163
+ let i;
164
+ for (i = 0; i < constants6.GROUPS; i++) {
165
+ groups.push(hex.slice(i * 4, (i + 1) * 4));
166
+ }
167
+ return new Address6(groups.join(':'));
168
+ }
169
+ /**
170
+ * Convert a URL (with optional port number) to an address object
171
+ * @memberof Address6
172
+ * @static
173
+ * @param {string} url - a URL with optional port number
174
+ * @example
175
+ * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/');
176
+ * addressAndPort.address.correctForm(); // 'ffff::'
177
+ * addressAndPort.port; // 8080
178
+ */
179
+ static fromURL(url) {
180
+ let host;
181
+ let port = null;
182
+ let result;
183
+ // If we have brackets parse them and find a port
184
+ if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) {
185
+ result = constants6.RE_URL_WITH_PORT.exec(url);
186
+ if (result === null) {
187
+ return {
188
+ error: 'failed to parse address with port',
189
+ address: null,
190
+ port: null,
191
+ };
192
+ }
193
+ host = result[1];
194
+ port = result[2];
195
+ // If there's a URL extract the address
196
+ }
197
+ else if (url.indexOf('/') !== -1) {
198
+ // Remove the protocol prefix
199
+ url = url.replace(/^[a-z0-9]+:\/\//, '');
200
+ // Parse the address
201
+ result = constants6.RE_URL.exec(url);
202
+ if (result === null) {
203
+ return {
204
+ error: 'failed to parse address from URL',
205
+ address: null,
206
+ port: null,
207
+ };
208
+ }
209
+ host = result[1];
210
+ // Otherwise just assign the URL to the host and let the library parse it
211
+ }
212
+ else {
213
+ host = url;
214
+ }
215
+ // If there's a port convert it to an integer
216
+ if (port) {
217
+ port = parseInt(port, 10);
218
+ // squelch out of range ports
219
+ if (port < 0 || port > 65536) {
220
+ port = null;
221
+ }
222
+ }
223
+ else {
224
+ // Standardize `undefined` to `null`
225
+ port = null;
226
+ }
227
+ return {
228
+ address: new Address6(host),
229
+ port,
230
+ };
231
+ }
232
+ /**
233
+ * Create an IPv6-mapped address given an IPv4 address
234
+ * @memberof Address6
235
+ * @static
236
+ * @param {string} address - An IPv4 address string
237
+ * @returns {Address6}
238
+ * @example
239
+ * var address = Address6.fromAddress4('192.168.0.1');
240
+ * address.correctForm(); // '::ffff:c0a8:1'
241
+ * address.to4in6(); // '::ffff:192.168.0.1'
242
+ */
243
+ static fromAddress4(address) {
244
+ const address4 = new ipv4_1.Address4(address);
245
+ const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask);
246
+ return new Address6(`::ffff:${address4.correctForm()}/${mask6}`);
247
+ }
248
+ /**
249
+ * Return an address from ip6.arpa form
250
+ * @memberof Address6
251
+ * @static
252
+ * @param {string} arpaFormAddress - an 'ip6.arpa' form address
253
+ * @returns {Adress6}
254
+ * @example
255
+ * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.)
256
+ * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe'
257
+ */
258
+ static fromArpa(arpaFormAddress) {
259
+ // remove ending ".ip6.arpa." or just "."
260
+ let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, '');
261
+ const semicolonAmount = 7;
262
+ // correct ip6.arpa form with ending removed will be 63 characters
263
+ if (address.length !== 63) {
264
+ throw new address_error_1.AddressError("Invalid 'ip6.arpa' form.");
265
+ }
266
+ const parts = address.split('.').reverse();
267
+ for (let i = semicolonAmount; i > 0; i--) {
268
+ const insertIndex = i * 4;
269
+ parts.splice(insertIndex, 0, ':');
270
+ }
271
+ address = parts.join('');
272
+ return new Address6(address);
273
+ }
274
+ /**
275
+ * Return the Microsoft UNC transcription of the address
276
+ * @memberof Address6
277
+ * @instance
278
+ * @returns {String} the Microsoft UNC transcription of the address
279
+ */
280
+ microsoftTranscription() {
281
+ return `${this.correctForm().replace(/:/g, '-')}.ipv6-literal.net`;
282
+ }
283
+ /**
284
+ * Return the first n bits of the address, defaulting to the subnet mask
285
+ * @memberof Address6
286
+ * @instance
287
+ * @param {number} [mask=subnet] - the number of bits to mask
288
+ * @returns {String} the first n bits of the address as a string
289
+ */
290
+ mask(mask = this.subnetMask) {
291
+ return this.getBitsBase2(0, mask);
292
+ }
293
+ /**
294
+ * Return the number of possible subnets of a given size in the address
295
+ * @memberof Address6
296
+ * @instance
297
+ * @param {number} [subnetSize=128] - the subnet size
298
+ * @returns {String}
299
+ */
300
+ // TODO: probably useful to have a numeric version of this too
301
+ possibleSubnets(subnetSize = 128) {
302
+ const availableBits = constants6.BITS - this.subnetMask;
303
+ const subnetBits = Math.abs(subnetSize - constants6.BITS);
304
+ const subnetPowers = availableBits - subnetBits;
305
+ if (subnetPowers < 0) {
306
+ return '0';
307
+ }
308
+ return addCommas((BigInt('2') ** BigInt(subnetPowers)).toString(10));
309
+ }
310
+ /**
311
+ * Helper function getting start address.
312
+ * @memberof Address6
313
+ * @instance
314
+ * @returns {bigint}
315
+ */
316
+ _startAddress() {
317
+ return BigInt(`0b${this.mask() + '0'.repeat(constants6.BITS - this.subnetMask)}`);
318
+ }
319
+ /**
320
+ * The first address in the range given by this address' subnet
321
+ * Often referred to as the Network Address.
322
+ * @memberof Address6
323
+ * @instance
324
+ * @returns {Address6}
325
+ */
326
+ startAddress() {
327
+ return Address6.fromBigInt(this._startAddress());
328
+ }
329
+ /**
330
+ * The first host address in the range given by this address's subnet ie
331
+ * the first address after the Network Address
332
+ * @memberof Address6
333
+ * @instance
334
+ * @returns {Address6}
335
+ */
336
+ startAddressExclusive() {
337
+ const adjust = BigInt('1');
338
+ return Address6.fromBigInt(this._startAddress() + adjust);
339
+ }
340
+ /**
341
+ * Helper function getting end address.
342
+ * @memberof Address6
343
+ * @instance
344
+ * @returns {bigint}
345
+ */
346
+ _endAddress() {
347
+ return BigInt(`0b${this.mask() + '1'.repeat(constants6.BITS - this.subnetMask)}`);
348
+ }
349
+ /**
350
+ * The last address in the range given by this address' subnet
351
+ * Often referred to as the Broadcast
352
+ * @memberof Address6
353
+ * @instance
354
+ * @returns {Address6}
355
+ */
356
+ endAddress() {
357
+ return Address6.fromBigInt(this._endAddress());
358
+ }
359
+ /**
360
+ * The last host address in the range given by this address's subnet ie
361
+ * the last address prior to the Broadcast Address
362
+ * @memberof Address6
363
+ * @instance
364
+ * @returns {Address6}
365
+ */
366
+ endAddressExclusive() {
367
+ const adjust = BigInt('1');
368
+ return Address6.fromBigInt(this._endAddress() - adjust);
369
+ }
370
+ /**
371
+ * Return the scope of the address
372
+ * @memberof Address6
373
+ * @instance
374
+ * @returns {String}
375
+ */
376
+ getScope() {
377
+ let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)];
378
+ if (this.getType() === 'Global unicast' && scope !== 'Link local') {
379
+ scope = 'Global';
380
+ }
381
+ return scope || 'Unknown';
382
+ }
383
+ /**
384
+ * Return the type of the address
385
+ * @memberof Address6
386
+ * @instance
387
+ * @returns {String}
388
+ */
389
+ getType() {
390
+ for (const subnet of Object.keys(constants6.TYPES)) {
391
+ if (this.isInSubnet(new Address6(subnet))) {
392
+ return constants6.TYPES[subnet];
393
+ }
394
+ }
395
+ return 'Global unicast';
396
+ }
397
+ /**
398
+ * Return the bits in the given range as a BigInt
399
+ * @memberof Address6
400
+ * @instance
401
+ * @returns {bigint}
402
+ */
403
+ getBits(start, end) {
404
+ return BigInt(`0b${this.getBitsBase2(start, end)}`);
405
+ }
406
+ /**
407
+ * Return the bits in the given range as a base-2 string
408
+ * @memberof Address6
409
+ * @instance
410
+ * @returns {String}
411
+ */
412
+ getBitsBase2(start, end) {
413
+ return this.binaryZeroPad().slice(start, end);
414
+ }
415
+ /**
416
+ * Return the bits in the given range as a base-16 string
417
+ * @memberof Address6
418
+ * @instance
419
+ * @returns {String}
420
+ */
421
+ getBitsBase16(start, end) {
422
+ const length = end - start;
423
+ if (length % 4 !== 0) {
424
+ throw new Error('Length of bits to retrieve must be divisible by four');
425
+ }
426
+ return this.getBits(start, end)
427
+ .toString(16)
428
+ .padStart(length / 4, '0');
429
+ }
430
+ /**
431
+ * Return the bits that are set past the subnet mask length
432
+ * @memberof Address6
433
+ * @instance
434
+ * @returns {String}
435
+ */
436
+ getBitsPastSubnet() {
437
+ return this.getBitsBase2(this.subnetMask, constants6.BITS);
438
+ }
439
+ /**
440
+ * Return the reversed ip6.arpa form of the address
441
+ * @memberof Address6
442
+ * @param {Object} options
443
+ * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix
444
+ * @instance
445
+ * @returns {String}
446
+ */
447
+ reverseForm(options) {
448
+ if (!options) {
449
+ options = {};
450
+ }
451
+ const characters = Math.floor(this.subnetMask / 4);
452
+ const reversed = this.canonicalForm()
453
+ .replace(/:/g, '')
454
+ .split('')
455
+ .slice(0, characters)
456
+ .reverse()
457
+ .join('.');
458
+ if (characters > 0) {
459
+ if (options.omitSuffix) {
460
+ return reversed;
461
+ }
462
+ return `${reversed}.ip6.arpa.`;
463
+ }
464
+ if (options.omitSuffix) {
465
+ return '';
466
+ }
467
+ return 'ip6.arpa.';
468
+ }
469
+ /**
470
+ * Return the correct form of the address
471
+ * @memberof Address6
472
+ * @instance
473
+ * @returns {String}
474
+ */
475
+ correctForm() {
476
+ let i;
477
+ let groups = [];
478
+ let zeroCounter = 0;
479
+ const zeroes = [];
480
+ for (i = 0; i < this.parsedAddress.length; i++) {
481
+ const value = parseInt(this.parsedAddress[i], 16);
482
+ if (value === 0) {
483
+ zeroCounter++;
484
+ }
485
+ if (value !== 0 && zeroCounter > 0) {
486
+ if (zeroCounter > 1) {
487
+ zeroes.push([i - zeroCounter, i - 1]);
488
+ }
489
+ zeroCounter = 0;
490
+ }
491
+ }
492
+ // Do we end with a string of zeroes?
493
+ if (zeroCounter > 1) {
494
+ zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]);
495
+ }
496
+ const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1);
497
+ if (zeroes.length > 0) {
498
+ const index = zeroLengths.indexOf(Math.max(...zeroLengths));
499
+ groups = compact(this.parsedAddress, zeroes[index]);
500
+ }
501
+ else {
502
+ groups = this.parsedAddress;
503
+ }
504
+ for (i = 0; i < groups.length; i++) {
505
+ if (groups[i] !== 'compact') {
506
+ groups[i] = parseInt(groups[i], 16).toString(16);
507
+ }
508
+ }
509
+ let correct = groups.join(':');
510
+ correct = correct.replace(/^compact$/, '::');
511
+ correct = correct.replace(/(^compact)|(compact$)/, ':');
512
+ correct = correct.replace(/compact/, '');
513
+ return correct;
514
+ }
515
+ /**
516
+ * Return a zero-padded base-2 string representation of the address
517
+ * @memberof Address6
518
+ * @instance
519
+ * @returns {String}
520
+ * @example
521
+ * var address = new Address6('2001:4860:4001:803::1011');
522
+ * address.binaryZeroPad();
523
+ * // '0010000000000001010010000110000001000000000000010000100000000011
524
+ * // 0000000000000000000000000000000000000000000000000001000000010001'
525
+ */
526
+ binaryZeroPad() {
527
+ return this.bigInt().toString(2).padStart(constants6.BITS, '0');
528
+ }
529
+ // TODO: Improve the semantics of this helper function
530
+ parse4in6(address) {
531
+ const groups = address.split(':');
532
+ const lastGroup = groups.slice(-1)[0];
533
+ const address4 = lastGroup.match(constants4.RE_ADDRESS);
534
+ if (address4) {
535
+ this.parsedAddress4 = address4[0];
536
+ this.address4 = new ipv4_1.Address4(this.parsedAddress4);
537
+ for (let i = 0; i < this.address4.groups; i++) {
538
+ if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) {
539
+ throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join('.')));
540
+ }
541
+ }
542
+ this.v4 = true;
543
+ groups[groups.length - 1] = this.address4.toGroup6();
544
+ address = groups.join(':');
545
+ }
546
+ return address;
547
+ }
548
+ // TODO: Make private?
549
+ parse(address) {
550
+ address = this.parse4in6(address);
551
+ const badCharacters = address.match(constants6.RE_BAD_CHARACTERS);
552
+ if (badCharacters) {
553
+ throw new address_error_1.AddressError(`Bad character${badCharacters.length > 1 ? 's' : ''} detected in address: ${badCharacters.join('')}`, address.replace(constants6.RE_BAD_CHARACTERS, '<span class="parse-error">$1</span>'));
554
+ }
555
+ const badAddress = address.match(constants6.RE_BAD_ADDRESS);
556
+ if (badAddress) {
557
+ throw new address_error_1.AddressError(`Address failed regex: ${badAddress.join('')}`, address.replace(constants6.RE_BAD_ADDRESS, '<span class="parse-error">$1</span>'));
558
+ }
559
+ let groups = [];
560
+ const halves = address.split('::');
561
+ if (halves.length === 2) {
562
+ let first = halves[0].split(':');
563
+ let last = halves[1].split(':');
564
+ if (first.length === 1 && first[0] === '') {
565
+ first = [];
566
+ }
567
+ if (last.length === 1 && last[0] === '') {
568
+ last = [];
569
+ }
570
+ const remaining = this.groups - (first.length + last.length);
571
+ if (!remaining) {
572
+ throw new address_error_1.AddressError('Error parsing groups');
573
+ }
574
+ this.elidedGroups = remaining;
575
+ this.elisionBegin = first.length;
576
+ this.elisionEnd = first.length + this.elidedGroups;
577
+ groups = groups.concat(first);
578
+ for (let i = 0; i < remaining; i++) {
579
+ groups.push('0');
580
+ }
581
+ groups = groups.concat(last);
582
+ }
583
+ else if (halves.length === 1) {
584
+ groups = address.split(':');
585
+ this.elidedGroups = 0;
586
+ }
587
+ else {
588
+ throw new address_error_1.AddressError('Too many :: groups found');
589
+ }
590
+ groups = groups.map((group) => parseInt(group, 16).toString(16));
591
+ if (groups.length !== this.groups) {
592
+ throw new address_error_1.AddressError('Incorrect number of groups found');
593
+ }
594
+ return groups;
595
+ }
596
+ /**
597
+ * Return the canonical form of the address
598
+ * @memberof Address6
599
+ * @instance
600
+ * @returns {String}
601
+ */
602
+ canonicalForm() {
603
+ return this.parsedAddress.map(paddedHex).join(':');
604
+ }
605
+ /**
606
+ * Return the decimal form of the address
607
+ * @memberof Address6
608
+ * @instance
609
+ * @returns {String}
610
+ */
611
+ decimal() {
612
+ return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, '0')).join(':');
613
+ }
614
+ /**
615
+ * Return the address as a BigInt
616
+ * @memberof Address6
617
+ * @instance
618
+ * @returns {bigint}
619
+ */
620
+ bigInt() {
621
+ return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`);
622
+ }
623
+ /**
624
+ * Return the last two groups of this address as an IPv4 address string
625
+ * @memberof Address6
626
+ * @instance
627
+ * @returns {Address4}
628
+ * @example
629
+ * var address = new Address6('2001:4860:4001::1825:bf11');
630
+ * address.to4().correctForm(); // '24.37.191.17'
631
+ */
632
+ to4() {
633
+ const binary = this.binaryZeroPad().split('');
634
+ return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16));
635
+ }
636
+ /**
637
+ * Return the v4-in-v6 form of the address
638
+ * @memberof Address6
639
+ * @instance
640
+ * @returns {String}
641
+ */
642
+ to4in6() {
643
+ const address4 = this.to4();
644
+ const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6);
645
+ const correct = address6.correctForm();
646
+ let infix = '';
647
+ if (!/:$/.test(correct)) {
648
+ infix = ':';
649
+ }
650
+ return correct + infix + address4.address;
651
+ }
652
+ /**
653
+ * Return an object containing the Teredo properties of the address
654
+ * @memberof Address6
655
+ * @instance
656
+ * @returns {Object}
657
+ */
658
+ inspectTeredo() {
659
+ /*
660
+ - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32).
661
+ - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that
662
+ is used.
663
+ - Bits 64 to 79 can be used to define some flags. Currently only the
664
+ higher order bit is used; it is set to 1 if the Teredo client is
665
+ located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista
666
+ and Windows Server 2008 implementations, more bits are used. In those
667
+ implementations, the format for these 16 bits is "CRAAAAUG AAAAAAAA",
668
+ where "C" remains the "Cone" flag. The "R" bit is reserved for future
669
+ use. The "U" bit is for the Universal/Local flag (set to 0). The "G" bit
670
+ is Individual/Group flag (set to 0). The A bits are set to a 12-bit
671
+ randomly generated number chosen by the Teredo client to introduce
672
+ additional protection for the Teredo node against IPv6-based scanning
673
+ attacks.
674
+ - Bits 80 to 95 contains the obfuscated UDP port number. This is the
675
+ port number that is mapped by the NAT to the Teredo client with all
676
+ bits inverted.
677
+ - Bits 96 to 127 contains the obfuscated IPv4 address. This is the
678
+ public IPv4 address of the NAT with all bits inverted.
679
+ */
680
+ const prefix = this.getBitsBase16(0, 32);
681
+ const bitsForUdpPort = this.getBits(80, 96);
682
+ // eslint-disable-next-line no-bitwise
683
+ const udpPort = (bitsForUdpPort ^ BigInt('0xffff')).toString();
684
+ const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64));
685
+ const bitsForClient4 = this.getBits(96, 128);
686
+ // eslint-disable-next-line no-bitwise
687
+ const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt('0xffffffff')).toString(16));
688
+ const flagsBase2 = this.getBitsBase2(64, 80);
689
+ const coneNat = (0, common_1.testBit)(flagsBase2, 15);
690
+ const reserved = (0, common_1.testBit)(flagsBase2, 14);
691
+ const groupIndividual = (0, common_1.testBit)(flagsBase2, 8);
692
+ const universalLocal = (0, common_1.testBit)(flagsBase2, 9);
693
+ const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10);
694
+ return {
695
+ prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`,
696
+ server4: server4.address,
697
+ client4: client4.address,
698
+ flags: flagsBase2,
699
+ coneNat,
700
+ microsoft: {
701
+ reserved,
702
+ universalLocal,
703
+ groupIndividual,
704
+ nonce,
705
+ },
706
+ udpPort,
707
+ };
708
+ }
709
+ /**
710
+ * Return an object containing the 6to4 properties of the address
711
+ * @memberof Address6
712
+ * @instance
713
+ * @returns {Object}
714
+ */
715
+ inspect6to4() {
716
+ /*
717
+ - Bits 0 to 15 are set to the 6to4 prefix (2002::/16).
718
+ - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used.
719
+ */
720
+ const prefix = this.getBitsBase16(0, 16);
721
+ const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48));
722
+ return {
723
+ prefix: prefix.slice(0, 4),
724
+ gateway: gateway.address,
725
+ };
726
+ }
727
+ /**
728
+ * Return a v6 6to4 address from a v6 v4inv6 address
729
+ * @memberof Address6
730
+ * @instance
731
+ * @returns {Address6}
732
+ */
733
+ to6to4() {
734
+ if (!this.is4()) {
735
+ return null;
736
+ }
737
+ const addr6to4 = [
738
+ '2002',
739
+ this.getBitsBase16(96, 112),
740
+ this.getBitsBase16(112, 128),
741
+ '',
742
+ '/16',
743
+ ].join(':');
744
+ return new Address6(addr6to4);
745
+ }
746
+ /**
747
+ * Return a byte array
748
+ * @memberof Address6
749
+ * @instance
750
+ * @returns {Array}
751
+ */
752
+ toByteArray() {
753
+ const valueWithoutPadding = this.bigInt().toString(16);
754
+ const leadingPad = '0'.repeat(valueWithoutPadding.length % 2);
755
+ const value = `${leadingPad}${valueWithoutPadding}`;
756
+ const bytes = [];
757
+ for (let i = 0, length = value.length; i < length; i += 2) {
758
+ bytes.push(parseInt(value.substring(i, i + 2), 16));
759
+ }
760
+ return bytes;
761
+ }
762
+ /**
763
+ * Return an unsigned byte array
764
+ * @memberof Address6
765
+ * @instance
766
+ * @returns {Array}
767
+ */
768
+ toUnsignedByteArray() {
769
+ return this.toByteArray().map(unsignByte);
770
+ }
771
+ /**
772
+ * Convert a byte array to an Address6 object
773
+ * @memberof Address6
774
+ * @static
775
+ * @returns {Address6}
776
+ */
777
+ static fromByteArray(bytes) {
778
+ return this.fromUnsignedByteArray(bytes.map(unsignByte));
779
+ }
780
+ /**
781
+ * Convert an unsigned byte array to an Address6 object
782
+ * @memberof Address6
783
+ * @static
784
+ * @returns {Address6}
785
+ */
786
+ static fromUnsignedByteArray(bytes) {
787
+ const BYTE_MAX = BigInt('256');
788
+ let result = BigInt('0');
789
+ let multiplier = BigInt('1');
790
+ for (let i = bytes.length - 1; i >= 0; i--) {
791
+ result += multiplier * BigInt(bytes[i].toString(10));
792
+ multiplier *= BYTE_MAX;
793
+ }
794
+ return Address6.fromBigInt(result);
795
+ }
796
+ /**
797
+ * Returns true if the address is in the canonical form, false otherwise
798
+ * @memberof Address6
799
+ * @instance
800
+ * @returns {boolean}
801
+ */
802
+ isCanonical() {
803
+ return this.addressMinusSuffix === this.canonicalForm();
804
+ }
805
+ /**
806
+ * Returns true if the address is a link local address, false otherwise
807
+ * @memberof Address6
808
+ * @instance
809
+ * @returns {boolean}
810
+ */
811
+ isLinkLocal() {
812
+ // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10'
813
+ if (this.getBitsBase2(0, 64) ===
814
+ '1111111010000000000000000000000000000000000000000000000000000000') {
815
+ return true;
816
+ }
817
+ return false;
818
+ }
819
+ /**
820
+ * Returns true if the address is a multicast address, false otherwise
821
+ * @memberof Address6
822
+ * @instance
823
+ * @returns {boolean}
824
+ */
825
+ isMulticast() {
826
+ return this.getType() === 'Multicast';
827
+ }
828
+ /**
829
+ * Returns true if the address is a v4-in-v6 address, false otherwise
830
+ * @memberof Address6
831
+ * @instance
832
+ * @returns {boolean}
833
+ */
834
+ is4() {
835
+ return this.v4;
836
+ }
837
+ /**
838
+ * Returns true if the address is a Teredo address, false otherwise
839
+ * @memberof Address6
840
+ * @instance
841
+ * @returns {boolean}
842
+ */
843
+ isTeredo() {
844
+ return this.isInSubnet(new Address6('2001::/32'));
845
+ }
846
+ /**
847
+ * Returns true if the address is a 6to4 address, false otherwise
848
+ * @memberof Address6
849
+ * @instance
850
+ * @returns {boolean}
851
+ */
852
+ is6to4() {
853
+ return this.isInSubnet(new Address6('2002::/16'));
854
+ }
855
+ /**
856
+ * Returns true if the address is a loopback address, false otherwise
857
+ * @memberof Address6
858
+ * @instance
859
+ * @returns {boolean}
860
+ */
861
+ isLoopback() {
862
+ return this.getType() === 'Loopback';
863
+ }
864
+ // #endregion
865
+ // #region HTML
866
+ /**
867
+ * @returns {String} the address in link form with a default port of 80
868
+ */
869
+ href(optionalPort) {
870
+ if (optionalPort === undefined) {
871
+ optionalPort = '';
872
+ }
873
+ else {
874
+ optionalPort = `:${optionalPort}`;
875
+ }
876
+ return `http://[${this.correctForm()}]${optionalPort}/`;
877
+ }
878
+ /**
879
+ * @returns {String} a link suitable for conveying the address via a URL hash
880
+ */
881
+ link(options) {
882
+ if (!options) {
883
+ options = {};
884
+ }
885
+ if (options.className === undefined) {
886
+ options.className = '';
887
+ }
888
+ if (options.prefix === undefined) {
889
+ options.prefix = '/#address=';
890
+ }
891
+ if (options.v4 === undefined) {
892
+ options.v4 = false;
893
+ }
894
+ let formFunction = this.correctForm;
895
+ if (options.v4) {
896
+ formFunction = this.to4in6;
897
+ }
898
+ const form = formFunction.call(this);
899
+ if (options.className) {
900
+ return `<a href="${options.prefix}${form}" class="${options.className}">${form}</a>`;
901
+ }
902
+ return `<a href="${options.prefix}${form}">${form}</a>`;
903
+ }
904
+ /**
905
+ * Groups an address
906
+ * @returns {String}
907
+ */
908
+ group() {
909
+ if (this.elidedGroups === 0) {
910
+ // The simple case
911
+ return helpers.simpleGroup(this.address).join(':');
912
+ }
913
+ assert(typeof this.elidedGroups === 'number');
914
+ assert(typeof this.elisionBegin === 'number');
915
+ // The elided case
916
+ const output = [];
917
+ const [left, right] = this.address.split('::');
918
+ if (left.length) {
919
+ output.push(...helpers.simpleGroup(left));
920
+ }
921
+ else {
922
+ output.push('');
923
+ }
924
+ const classes = ['hover-group'];
925
+ for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) {
926
+ classes.push(`group-${i}`);
927
+ }
928
+ output.push(`<span class="${classes.join(' ')}"></span>`);
929
+ if (right.length) {
930
+ output.push(...helpers.simpleGroup(right, this.elisionEnd));
931
+ }
932
+ else {
933
+ output.push('');
934
+ }
935
+ if (this.is4()) {
936
+ assert(this.address4 instanceof ipv4_1.Address4);
937
+ output.pop();
938
+ output.push(this.address4.groupForV6());
939
+ }
940
+ return output.join(':');
941
+ }
942
+ // #endregion
943
+ // #region Regular expressions
944
+ /**
945
+ * Generate a regular expression string that can be used to find or validate
946
+ * all variations of this address
947
+ * @memberof Address6
948
+ * @instance
949
+ * @param {boolean} substringSearch
950
+ * @returns {string}
951
+ */
952
+ regularExpressionString(substringSearch = false) {
953
+ let output = [];
954
+ // TODO: revisit why this is necessary
955
+ const address6 = new Address6(this.correctForm());
956
+ if (address6.elidedGroups === 0) {
957
+ // The simple case
958
+ output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress));
959
+ }
960
+ else if (address6.elidedGroups === constants6.GROUPS) {
961
+ // A completely elided address
962
+ output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS));
963
+ }
964
+ else {
965
+ // A partially elided address
966
+ const halves = address6.address.split('::');
967
+ if (halves[0].length) {
968
+ output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(':')));
969
+ }
970
+ assert(typeof address6.elidedGroups === 'number');
971
+ output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0));
972
+ if (halves[1].length) {
973
+ output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(':')));
974
+ }
975
+ output = [output.join(':')];
976
+ }
977
+ if (!substringSearch) {
978
+ output = [
979
+ '(?=^|',
980
+ regular_expressions_1.ADDRESS_BOUNDARY,
981
+ '|[^\\w\\:])(',
982
+ ...output,
983
+ ')(?=[^\\w\\:]|',
984
+ regular_expressions_1.ADDRESS_BOUNDARY,
985
+ '|$)',
986
+ ];
987
+ }
988
+ return output.join('');
989
+ }
990
+ /**
991
+ * Generate a regular expression that can be used to find or validate all
992
+ * variations of this address.
993
+ * @memberof Address6
994
+ * @instance
995
+ * @param {boolean} substringSearch
996
+ * @returns {RegExp}
997
+ */
998
+ regularExpression(substringSearch = false) {
999
+ return new RegExp(this.regularExpressionString(substringSearch), 'i');
1000
+ }
1001
+ }
1002
+ exports.Address6 = Address6;
1003
+ //# sourceMappingURL=ipv6.js.map