@btc-vision/bitcoin 6.3.1 → 6.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/.babelrc +4 -0
  2. package/.gitattributes +2 -0
  3. package/.nyc_output/6368a5b2-daa5-4821-8ed0-b742d6fc7eab.json +1 -0
  4. package/.nyc_output/processinfo/6368a5b2-daa5-4821-8ed0-b742d6fc7eab.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -0
  6. package/.prettierrc.json +12 -0
  7. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
  8. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +3 -0
  9. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +962 -0
  10. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +34 -0
  11. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +24 -0
  12. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +273 -0
  13. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +2 -0
  14. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +204 -0
  15. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +138 -0
  16. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
  17. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +28 -0
  18. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
  19. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
  20. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +116 -0
  21. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +46 -0
  22. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +1080 -0
  23. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +430 -0
  24. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +27 -0
  25. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +450 -0
  26. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +965 -0
  27. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +8 -0
  28. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +5 -0
  29. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +45 -0
  30. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
  31. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
  32. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1272 -0
  33. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1547 -0
  34. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
  35. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +153 -0
  36. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +271 -0
  37. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +574 -0
  38. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +692 -0
  39. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +711 -0
  40. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +171 -0
  41. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +169 -0
  42. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
  43. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
  44. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  45. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +804 -0
  46. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1173 -0
  47. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1318 -0
  48. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +127 -0
  49. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +103 -0
  50. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
  51. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +89 -0
  52. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +57 -0
  53. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2745 -0
  54. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3976 -0
  55. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
  56. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2964 -0
  57. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +67 -0
  58. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1391 -0
  59. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +25 -0
  60. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +3115 -0
  61. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +98 -0
  62. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +771 -0
  63. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1260 -0
  64. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
  65. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
  66. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +373 -0
  67. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1938 -0
  68. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +53 -0
  69. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +302 -0
  70. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3198 -0
  71. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +65 -0
  72. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
  73. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
  74. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
  75. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
  76. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +108 -0
  77. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
  78. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
  79. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
  80. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
  81. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
  82. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +252 -0
  83. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +825 -0
  84. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  85. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
  86. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
  87. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +553 -0
  88. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
  89. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
  90. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +120 -0
  91. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +11 -0
  92. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +261 -0
  93. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
  94. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +227 -0
  95. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +15 -0
  96. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +328 -0
  97. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +150 -0
  98. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +39 -0
  99. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +63 -0
  100. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +310 -0
  101. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +590 -0
  102. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +415 -0
  103. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +26 -0
  104. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +168 -0
  105. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +188 -0
  106. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +146 -0
  107. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +12 -0
  108. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +43 -0
  109. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +81 -0
  110. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
  111. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +51 -0
  112. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +40 -0
  113. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +39 -0
  114. package/CHANGELOG.md +403 -0
  115. package/CONTRIBUTING.md +83 -0
  116. package/browser/address.d.ts +16 -0
  117. package/{src → browser}/bip66.d.ts +6 -7
  118. package/{src → browser}/block.d.ts +29 -30
  119. package/{src → browser}/bufferutils.d.ts +34 -54
  120. package/browser/crypto/crypto.d.ts +1 -0
  121. package/{src → browser}/crypto.d.ts +13 -18
  122. package/browser/ecc_lib.d.ts +3 -0
  123. package/browser/hooks/AdvancedSignatureManager.d.ts +16 -0
  124. package/{src → browser}/hooks/HookedSigner.d.ts +4 -4
  125. package/browser/hooks/SignatureManager.d.ts +13 -0
  126. package/browser/index.d.ts +58 -0
  127. package/browser/index.js +2 -0
  128. package/browser/index.js.LICENSE.txt +14 -0
  129. package/browser/merkle.d.ts +1 -0
  130. package/browser/networks.d.ts +23 -0
  131. package/{src → browser}/ops.d.ts +126 -126
  132. package/browser/payments/bip341.d.ts +23 -0
  133. package/browser/payments/embed.d.ts +2 -0
  134. package/browser/payments/index.d.ts +43 -0
  135. package/{src → browser}/payments/lazy.d.ts +2 -2
  136. package/browser/payments/p2ms.d.ts +2 -0
  137. package/browser/payments/p2pk.d.ts +2 -0
  138. package/browser/payments/p2pkh.d.ts +2 -0
  139. package/browser/payments/p2sh.d.ts +2 -0
  140. package/browser/payments/p2tr.d.ts +2 -0
  141. package/browser/payments/p2wpkh.d.ts +2 -0
  142. package/browser/payments/p2wsh.d.ts +2 -0
  143. package/browser/psbt/bip371.d.ts +16 -0
  144. package/browser/psbt/psbtutils.d.ts +26 -0
  145. package/{src → browser}/psbt.d.ts +167 -238
  146. package/browser/push_data.d.ts +7 -0
  147. package/browser/script.d.ts +17 -0
  148. package/browser/script_number.d.ts +2 -0
  149. package/browser/script_signature.d.ts +7 -0
  150. package/{src → browser}/transaction.d.ts +48 -60
  151. package/{src → browser}/types.d.ts +37 -54
  152. package/build/address.d.ts +16 -0
  153. package/build/address.js +148 -0
  154. package/build/bip66.d.ts +6 -0
  155. package/build/bip66.js +99 -0
  156. package/build/block.d.ts +29 -0
  157. package/build/block.js +181 -0
  158. package/build/bufferutils.d.ts +34 -0
  159. package/build/bufferutils.js +141 -0
  160. package/build/crypto/crypto.d.ts +1 -0
  161. package/build/crypto/crypto.js +1 -0
  162. package/build/crypto.d.ts +13 -0
  163. package/build/crypto.js +87 -0
  164. package/build/ecc_lib.d.ts +3 -0
  165. package/build/ecc_lib.js +61 -0
  166. package/build/hooks/AdvancedSignatureManager.d.ts +16 -0
  167. package/build/hooks/AdvancedSignatureManager.js +52 -0
  168. package/build/hooks/HookedSigner.d.ts +4 -0
  169. package/build/hooks/HookedSigner.js +64 -0
  170. package/build/hooks/SignatureManager.d.ts +13 -0
  171. package/build/hooks/SignatureManager.js +45 -0
  172. package/build/index.d.ts +58 -0
  173. package/build/index.js +32 -0
  174. package/build/merkle.d.ts +1 -0
  175. package/build/merkle.js +19 -0
  176. package/build/networks.d.ts +23 -0
  177. package/build/networks.js +121 -0
  178. package/build/ops.d.ts +126 -0
  179. package/{src → build}/ops.js +127 -131
  180. package/build/payments/bip341.d.ts +23 -0
  181. package/build/payments/bip341.js +82 -0
  182. package/build/payments/embed.d.ts +2 -0
  183. package/build/payments/embed.js +39 -0
  184. package/build/payments/index.d.ts +43 -0
  185. package/build/payments/index.js +10 -0
  186. package/build/payments/lazy.d.ts +2 -0
  187. package/{src → build}/payments/lazy.js +28 -32
  188. package/build/payments/p2ms.d.ts +2 -0
  189. package/{src → build}/payments/p2ms.js +128 -158
  190. package/build/payments/p2pk.d.ts +2 -0
  191. package/build/payments/p2pk.js +68 -0
  192. package/build/payments/p2pkh.d.ts +2 -0
  193. package/build/payments/p2pkh.js +173 -0
  194. package/build/payments/p2sh.d.ts +2 -0
  195. package/build/payments/p2sh.js +176 -0
  196. package/build/payments/p2tr.d.ts +2 -0
  197. package/build/payments/p2tr.js +254 -0
  198. package/build/payments/p2wpkh.d.ts +2 -0
  199. package/build/payments/p2wpkh.js +130 -0
  200. package/build/payments/p2wsh.d.ts +2 -0
  201. package/build/payments/p2wsh.js +180 -0
  202. package/build/psbt/bip371.d.ts +16 -0
  203. package/build/psbt/bip371.js +246 -0
  204. package/build/psbt/psbtutils.d.ts +26 -0
  205. package/build/psbt/psbtutils.js +177 -0
  206. package/build/psbt.d.ts +167 -0
  207. package/build/psbt.js +1307 -0
  208. package/build/push_data.d.ts +7 -0
  209. package/build/push_data.js +57 -0
  210. package/build/script.d.ts +17 -0
  211. package/build/script.js +167 -0
  212. package/build/script_number.d.ts +2 -0
  213. package/build/script_number.js +49 -0
  214. package/build/script_signature.d.ts +7 -0
  215. package/build/script_signature.js +49 -0
  216. package/build/transaction.d.ts +48 -0
  217. package/build/transaction.js +445 -0
  218. package/build/types.d.ts +37 -0
  219. package/build/types.js +73 -0
  220. package/cjs/package.json +3 -0
  221. package/coverage/tmp/coverage-31752-1735543485354-0.json +1 -0
  222. package/coverage/tmp/coverage-59920-1735543484555-0.json +1 -0
  223. package/coverage/tmp/coverage-66252-1735543483919-0.json +1 -0
  224. package/coverage/tmp/coverage-68440-1735543485236-0.json +1 -0
  225. package/coverage/tmp/coverage-70588-1735543484426-0.json +1 -0
  226. package/coverage/tmp/coverage-79292-1735543485296-0.json +1 -0
  227. package/coverage/tmp/coverage-80212-1735543483980-0.json +1 -0
  228. package/eslint.config.js +56 -0
  229. package/gulpfile.js +42 -0
  230. package/package.json +105 -50
  231. package/src/{address.js → address.ts} +211 -191
  232. package/src/{bip66.js → bip66.ts} +23 -19
  233. package/src/{block.js → block.ts} +114 -105
  234. package/src/{bufferutils.js → bufferutils.ts} +65 -67
  235. package/src/crypto/crypto-browser.js +75 -0
  236. package/src/crypto/crypto.ts +1 -0
  237. package/src/crypto.ts +108 -0
  238. package/src/{ecc_lib.js → ecc_lib.ts} +25 -53
  239. package/src/hooks/{AdvancedSignatureManager.js → AdvancedSignatureManager.ts} +34 -18
  240. package/src/hooks/HookedSigner.ts +108 -0
  241. package/src/hooks/{SignatureManager.js → SignatureManager.ts} +26 -14
  242. package/src/index.ts +86 -0
  243. package/src/{merkle.js → merkle.ts} +8 -7
  244. package/src/{networks.js → networks.ts} +235 -220
  245. package/src/ops.ts +282 -0
  246. package/src/payments/bip341.ts +140 -0
  247. package/src/payments/embed.ts +55 -0
  248. package/src/payments/{index.d.ts → index.ts} +24 -10
  249. package/src/payments/lazy.ts +28 -0
  250. package/src/payments/p2ms.ts +150 -0
  251. package/src/payments/{p2pk.js → p2pk.ts} +85 -82
  252. package/src/payments/p2pkh.ts +206 -0
  253. package/src/payments/{p2sh.js → p2sh.ts} +206 -204
  254. package/src/payments/{p2tr.js → p2tr.ts} +114 -125
  255. package/src/payments/{p2wpkh.js → p2wpkh.ts} +51 -56
  256. package/src/payments/{p2wsh.js → p2wsh.ts} +69 -81
  257. package/src/psbt/{bip371.js → bip371.ts} +441 -424
  258. package/src/psbt/psbtutils.ts +301 -0
  259. package/src/{psbt.js → psbt.ts} +2187 -1828
  260. package/src/{push_data.js → push_data.ts} +35 -21
  261. package/src/{script.js → script.ts} +93 -77
  262. package/src/{script_number.js → script_number.ts} +15 -21
  263. package/src/{script_signature.js → script_signature.ts} +26 -14
  264. package/src/{transaction.js → transaction.ts} +247 -167
  265. package/src/types.ts +122 -0
  266. package/test/address.spec.js +124 -0
  267. package/test/address.spec.ts +177 -0
  268. package/test/bitcoin.core.spec.js +170 -0
  269. package/test/bitcoin.core.spec.ts +234 -0
  270. package/test/block.spec.js +141 -0
  271. package/test/block.spec.ts +194 -0
  272. package/test/bufferutils.spec.js +427 -0
  273. package/test/bufferutils.spec.ts +513 -0
  274. package/test/crypto.spec.js +41 -0
  275. package/test/crypto.spec.ts +55 -0
  276. package/test/fixtures/address.json +329 -0
  277. package/test/fixtures/block.json +148 -0
  278. package/test/fixtures/bufferutils.json +102 -0
  279. package/test/fixtures/core/README.md +26 -0
  280. package/test/fixtures/core/base58_encode_decode.json +50 -0
  281. package/test/fixtures/core/base58_keys_invalid.json +152 -0
  282. package/test/fixtures/core/base58_keys_valid.json +452 -0
  283. package/test/fixtures/core/blocks.json +27 -0
  284. package/test/fixtures/core/sig_canonical.json +7 -0
  285. package/test/fixtures/core/sig_noncanonical.json +33 -0
  286. package/test/fixtures/core/sighash.json +3505 -0
  287. package/test/fixtures/core/tx_valid.json +2023 -0
  288. package/test/fixtures/crypto.json +43 -0
  289. package/test/fixtures/ecdsa.json +217 -0
  290. package/test/fixtures/ecpair.json +141 -0
  291. package/test/fixtures/embed.json +108 -0
  292. package/test/fixtures/p2ms.json +434 -0
  293. package/test/fixtures/p2pk.json +179 -0
  294. package/test/fixtures/p2pkh.json +276 -0
  295. package/test/fixtures/p2sh.json +508 -0
  296. package/test/fixtures/p2tr.json +1198 -0
  297. package/test/fixtures/p2wpkh.json +290 -0
  298. package/test/fixtures/p2wsh.json +489 -0
  299. package/test/fixtures/psbt.json +924 -0
  300. package/test/fixtures/script.json +465 -0
  301. package/test/fixtures/script_number.json +225 -0
  302. package/test/fixtures/signature.json +140 -0
  303. package/test/fixtures/transaction.json +916 -0
  304. package/test/integration/_regtest.js +7 -0
  305. package/test/integration/_regtest.ts +6 -0
  306. package/test/integration/addresses.spec.js +116 -0
  307. package/test/integration/addresses.spec.ts +154 -0
  308. package/test/integration/bip32.spec.js +85 -0
  309. package/test/integration/bip32.spec.ts +151 -0
  310. package/test/integration/blocks.spec.js +26 -0
  311. package/test/integration/blocks.spec.ts +28 -0
  312. package/test/integration/cltv.spec.js +199 -0
  313. package/test/integration/cltv.spec.ts +283 -0
  314. package/test/integration/csv.spec.js +362 -0
  315. package/test/integration/csv.spec.ts +527 -0
  316. package/test/integration/payments.spec.js +98 -0
  317. package/test/integration/payments.spec.ts +135 -0
  318. package/test/integration/taproot.spec.js +532 -0
  319. package/test/integration/taproot.spec.ts +707 -0
  320. package/test/integration/transactions.spec.js +561 -0
  321. package/test/integration/transactions.spec.ts +769 -0
  322. package/test/payments.spec.js +97 -0
  323. package/test/payments.spec.ts +125 -0
  324. package/test/payments.utils.js +190 -0
  325. package/test/payments.utils.ts +208 -0
  326. package/test/psbt.spec.js +1044 -0
  327. package/test/psbt.spec.ts +1414 -0
  328. package/test/script.spec.js +151 -0
  329. package/test/script.spec.ts +210 -0
  330. package/test/script_number.spec.js +24 -0
  331. package/test/script_number.spec.ts +29 -0
  332. package/test/script_signature.spec.js +52 -0
  333. package/test/script_signature.spec.ts +66 -0
  334. package/test/transaction.spec.js +269 -0
  335. package/test/transaction.spec.ts +387 -0
  336. package/test/ts-node-register.js +5 -0
  337. package/test/tsconfig.json +45 -0
  338. package/test/types.spec.js +46 -0
  339. package/test/types.spec.ts +58 -0
  340. package/tsconfig.base.json +27 -0
  341. package/tsconfig.json +19 -0
  342. package/tsconfig.webpack.json +18 -0
  343. package/webpack.config.js +79 -0
  344. package/src/address.d.ts +0 -42
  345. package/src/crypto.js +0 -128
  346. package/src/ecc_lib.d.ts +0 -17
  347. package/src/hooks/AdvancedSignatureManager.d.ts +0 -44
  348. package/src/hooks/HookedSigner.js +0 -90
  349. package/src/hooks/SignatureManager.d.ts +0 -35
  350. package/src/index.d.ts +0 -42
  351. package/src/index.js +0 -87
  352. package/src/merkle.d.ts +0 -10
  353. package/src/networks.d.ts +0 -83
  354. package/src/payments/bip341.d.ts +0 -49
  355. package/src/payments/bip341.js +0 -124
  356. package/src/payments/embed.d.ts +0 -9
  357. package/src/payments/embed.js +0 -54
  358. package/src/payments/index.js +0 -69
  359. package/src/payments/p2ms.d.ts +0 -9
  360. package/src/payments/p2pk.d.ts +0 -10
  361. package/src/payments/p2pkh.d.ts +0 -10
  362. package/src/payments/p2pkh.js +0 -143
  363. package/src/payments/p2sh.d.ts +0 -10
  364. package/src/payments/p2tr.d.ts +0 -10
  365. package/src/payments/p2wpkh.d.ts +0 -10
  366. package/src/payments/p2wsh.d.ts +0 -10
  367. package/src/psbt/bip371.d.ts +0 -42
  368. package/src/psbt/psbtutils.d.ts +0 -64
  369. package/src/psbt/psbtutils.js +0 -191
  370. package/src/push_data.d.ts +0 -29
  371. package/src/script.d.ts +0 -42
  372. package/src/script_number.d.ts +0 -19
  373. package/src/script_signature.d.ts +0 -21
  374. package/src/types.js +0 -106
@@ -0,0 +1,261 @@
1
+ #!/usr/bin/env python3
2
+ # Copyright (c) 2012 Google Inc. All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be
4
+ # found in the LICENSE file.
5
+
6
+ """gyptest.py -- test runner for GYP tests."""
7
+
8
+
9
+ import argparse
10
+ import os
11
+ import platform
12
+ import subprocess
13
+ import sys
14
+ import time
15
+
16
+
17
+ def is_test_name(f):
18
+ return f.startswith("gyptest") and f.endswith(".py")
19
+
20
+
21
+ def find_all_gyptest_files(directory):
22
+ result = []
23
+ for root, dirs, files in os.walk(directory):
24
+ result.extend([os.path.join(root, f) for f in files if is_test_name(f)])
25
+ result.sort()
26
+ return result
27
+
28
+
29
+ def main(argv=None):
30
+ if argv is None:
31
+ argv = sys.argv
32
+
33
+ parser = argparse.ArgumentParser()
34
+ parser.add_argument("-a", "--all", action="store_true", help="run all tests")
35
+ parser.add_argument("-C", "--chdir", action="store", help="change to directory")
36
+ parser.add_argument(
37
+ "-f",
38
+ "--format",
39
+ action="store",
40
+ default="",
41
+ help="run tests with the specified formats",
42
+ )
43
+ parser.add_argument(
44
+ "-G",
45
+ "--gyp_option",
46
+ action="append",
47
+ default=[],
48
+ help="Add -G options to the gyp command line",
49
+ )
50
+ parser.add_argument(
51
+ "-l", "--list", action="store_true", help="list available tests and exit"
52
+ )
53
+ parser.add_argument(
54
+ "-n",
55
+ "--no-exec",
56
+ action="store_true",
57
+ help="no execute, just print the command line",
58
+ )
59
+ parser.add_argument(
60
+ "--path", action="append", default=[], help="additional $PATH directory"
61
+ )
62
+ parser.add_argument(
63
+ "-q",
64
+ "--quiet",
65
+ action="store_true",
66
+ help="quiet, don't print anything unless there are failures",
67
+ )
68
+ parser.add_argument(
69
+ "-v",
70
+ "--verbose",
71
+ action="store_true",
72
+ help="print configuration info and test results.",
73
+ )
74
+ parser.add_argument("tests", nargs="*")
75
+ args = parser.parse_args(argv[1:])
76
+
77
+ if args.chdir:
78
+ os.chdir(args.chdir)
79
+
80
+ if args.path:
81
+ extra_path = [os.path.abspath(p) for p in args.path]
82
+ extra_path = os.pathsep.join(extra_path)
83
+ os.environ["PATH"] = extra_path + os.pathsep + os.environ["PATH"]
84
+
85
+ if not args.tests:
86
+ if not args.all:
87
+ sys.stderr.write("Specify -a to get all tests.\n")
88
+ return 1
89
+ args.tests = ["test"]
90
+
91
+ tests = []
92
+ for arg in args.tests:
93
+ if os.path.isdir(arg):
94
+ tests.extend(find_all_gyptest_files(os.path.normpath(arg)))
95
+ else:
96
+ if not is_test_name(os.path.basename(arg)):
97
+ print(arg, "is not a valid gyp test name.", file=sys.stderr)
98
+ sys.exit(1)
99
+ tests.append(arg)
100
+
101
+ if args.list:
102
+ for test in tests:
103
+ print(test)
104
+ sys.exit(0)
105
+
106
+ os.environ["PYTHONPATH"] = os.path.abspath("test/lib")
107
+
108
+ if args.verbose:
109
+ print_configuration_info()
110
+
111
+ if args.gyp_option and not args.quiet:
112
+ print("Extra Gyp options: %s\n" % args.gyp_option)
113
+
114
+ if args.format:
115
+ format_list = args.format.split(",")
116
+ else:
117
+ format_list = {
118
+ "aix5": ["make"],
119
+ "os400": ["make"],
120
+ "freebsd7": ["make"],
121
+ "freebsd8": ["make"],
122
+ "openbsd5": ["make"],
123
+ "cygwin": ["msvs"],
124
+ "win32": ["msvs", "ninja"],
125
+ "linux": ["make", "ninja"],
126
+ "linux2": ["make", "ninja"],
127
+ "linux3": ["make", "ninja"],
128
+ # TODO: Re-enable xcode-ninja.
129
+ # https://bugs.chromium.org/p/gyp/issues/detail?id=530
130
+ # 'darwin': ['make', 'ninja', 'xcode', 'xcode-ninja'],
131
+ "darwin": ["make", "ninja", "xcode"],
132
+ }[sys.platform]
133
+
134
+ gyp_options = []
135
+ for option in args.gyp_option:
136
+ gyp_options += ["-G", option]
137
+
138
+ runner = Runner(format_list, tests, gyp_options, args.verbose)
139
+ runner.run()
140
+
141
+ if not args.quiet:
142
+ runner.print_results()
143
+
144
+ return 1 if runner.failures else 0
145
+
146
+
147
+ def print_configuration_info():
148
+ print("Test configuration:")
149
+ if sys.platform == "darwin":
150
+ sys.path.append(os.path.abspath("test/lib"))
151
+ import TestMac
152
+
153
+ print(f" Mac {platform.mac_ver()[0]} {platform.mac_ver()[2]}")
154
+ print(f" Xcode {TestMac.Xcode.Version()}")
155
+ elif sys.platform == "win32":
156
+ sys.path.append(os.path.abspath("pylib"))
157
+ import gyp.MSVSVersion
158
+
159
+ print(" Win %s %s\n" % platform.win32_ver()[0:2])
160
+ print(" MSVS %s" % gyp.MSVSVersion.SelectVisualStudioVersion().Description())
161
+ elif sys.platform in ("linux", "linux2"):
162
+ print(" Linux %s" % " ".join(platform.linux_distribution()))
163
+ print(f" Python {platform.python_version()}")
164
+ print(f" PYTHONPATH={os.environ['PYTHONPATH']}")
165
+ print()
166
+
167
+
168
+ class Runner:
169
+ def __init__(self, formats, tests, gyp_options, verbose):
170
+ self.formats = formats
171
+ self.tests = tests
172
+ self.verbose = verbose
173
+ self.gyp_options = gyp_options
174
+ self.failures = []
175
+ self.num_tests = len(formats) * len(tests)
176
+ num_digits = len(str(self.num_tests))
177
+ self.fmt_str = "[%%%dd/%%%dd] (%%s) %%s" % (num_digits, num_digits)
178
+ self.isatty = sys.stdout.isatty() and not self.verbose
179
+ self.env = os.environ.copy()
180
+ self.hpos = 0
181
+
182
+ def run(self):
183
+ run_start = time.time()
184
+
185
+ i = 1
186
+ for fmt in self.formats:
187
+ for test in self.tests:
188
+ self.run_test(test, fmt, i)
189
+ i += 1
190
+
191
+ if self.isatty:
192
+ self.erase_current_line()
193
+
194
+ self.took = time.time() - run_start
195
+
196
+ def run_test(self, test, fmt, i):
197
+ if self.isatty:
198
+ self.erase_current_line()
199
+
200
+ msg = self.fmt_str % (i, self.num_tests, fmt, test)
201
+ self.print_(msg)
202
+
203
+ start = time.time()
204
+ cmd = [sys.executable, test] + self.gyp_options
205
+ self.env["TESTGYP_FORMAT"] = fmt
206
+ proc = subprocess.Popen(
207
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=self.env
208
+ )
209
+ proc.wait()
210
+ took = time.time() - start
211
+
212
+ stdout = proc.stdout.read().decode("utf8")
213
+ if proc.returncode == 2:
214
+ res = "skipped"
215
+ elif proc.returncode:
216
+ res = "failed"
217
+ self.failures.append(f"({test}) {fmt}")
218
+ else:
219
+ res = "passed"
220
+ res_msg = f" {res} {took:.3f}s"
221
+ self.print_(res_msg)
222
+
223
+ if stdout and not stdout.endswith(("PASSED\n", "NO RESULT\n")):
224
+ print()
225
+ print("\n".join(f" {line}" for line in stdout.splitlines()))
226
+ elif not self.isatty:
227
+ print()
228
+
229
+ def print_(self, msg):
230
+ print(msg, end="")
231
+ index = msg.rfind("\n")
232
+ if index == -1:
233
+ self.hpos += len(msg)
234
+ else:
235
+ self.hpos = len(msg) - index
236
+ sys.stdout.flush()
237
+
238
+ def erase_current_line(self):
239
+ print("\b" * self.hpos + " " * self.hpos + "\b" * self.hpos, end="")
240
+ sys.stdout.flush()
241
+ self.hpos = 0
242
+
243
+ def print_results(self):
244
+ num_failures = len(self.failures)
245
+ if num_failures:
246
+ print()
247
+ if num_failures == 1:
248
+ print("Failed the following test:")
249
+ else:
250
+ print("Failed the following %d tests:" % num_failures)
251
+ print("\t" + "\n\t".join(sorted(self.failures)))
252
+ print()
253
+ print(
254
+ "Ran %d tests in %.3fs, %d failed."
255
+ % (self.num_tests, self.took, num_failures)
256
+ )
257
+ print()
258
+
259
+
260
+ if __name__ == "__main__":
261
+ sys.exit(main())
@@ -0,0 +1,250 @@
1
+ // Copyright 2017 - Refael Ackermann
2
+ // Distributed under MIT style license
3
+ // See accompanying file LICENSE at https://github.com/node4good/windows-autoconf
4
+
5
+ // Usage:
6
+ // powershell -ExecutionPolicy Unrestricted -Command "Add-Type -Path Find-VisualStudio.cs; [VisualStudioConfiguration.Main]::PrintJson()"
7
+ // This script needs to be compatible with PowerShell v2 to run on Windows 2008R2 and Windows 7.
8
+
9
+ using System;
10
+ using System.Text;
11
+ using System.Runtime.InteropServices;
12
+ using System.Collections.Generic;
13
+
14
+ namespace VisualStudioConfiguration
15
+ {
16
+ [Flags]
17
+ public enum InstanceState : uint
18
+ {
19
+ None = 0,
20
+ Local = 1,
21
+ Registered = 2,
22
+ NoRebootRequired = 4,
23
+ NoErrors = 8,
24
+ Complete = 4294967295,
25
+ }
26
+
27
+ [Guid("6380BCFF-41D3-4B2E-8B2E-BF8A6810C848")]
28
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
29
+ [ComImport]
30
+ public interface IEnumSetupInstances
31
+ {
32
+
33
+ void Next([MarshalAs(UnmanagedType.U4), In] int celt,
34
+ [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.Interface), Out] ISetupInstance[] rgelt,
35
+ [MarshalAs(UnmanagedType.U4)] out int pceltFetched);
36
+
37
+ void Skip([MarshalAs(UnmanagedType.U4), In] int celt);
38
+
39
+ void Reset();
40
+
41
+ [return: MarshalAs(UnmanagedType.Interface)]
42
+ IEnumSetupInstances Clone();
43
+ }
44
+
45
+ [Guid("42843719-DB4C-46C2-8E7C-64F1816EFD5B")]
46
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
47
+ [ComImport]
48
+ public interface ISetupConfiguration
49
+ {
50
+ }
51
+
52
+ [Guid("26AAB78C-4A60-49D6-AF3B-3C35BC93365D")]
53
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
54
+ [ComImport]
55
+ public interface ISetupConfiguration2 : ISetupConfiguration
56
+ {
57
+
58
+ [return: MarshalAs(UnmanagedType.Interface)]
59
+ IEnumSetupInstances EnumInstances();
60
+
61
+ [return: MarshalAs(UnmanagedType.Interface)]
62
+ ISetupInstance GetInstanceForCurrentProcess();
63
+
64
+ [return: MarshalAs(UnmanagedType.Interface)]
65
+ ISetupInstance GetInstanceForPath([MarshalAs(UnmanagedType.LPWStr), In] string path);
66
+
67
+ [return: MarshalAs(UnmanagedType.Interface)]
68
+ IEnumSetupInstances EnumAllInstances();
69
+ }
70
+
71
+ [Guid("B41463C3-8866-43B5-BC33-2B0676F7F42E")]
72
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
73
+ [ComImport]
74
+ public interface ISetupInstance
75
+ {
76
+ }
77
+
78
+ [Guid("89143C9A-05AF-49B0-B717-72E218A2185C")]
79
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
80
+ [ComImport]
81
+ public interface ISetupInstance2 : ISetupInstance
82
+ {
83
+ [return: MarshalAs(UnmanagedType.BStr)]
84
+ string GetInstanceId();
85
+
86
+ [return: MarshalAs(UnmanagedType.Struct)]
87
+ System.Runtime.InteropServices.ComTypes.FILETIME GetInstallDate();
88
+
89
+ [return: MarshalAs(UnmanagedType.BStr)]
90
+ string GetInstallationName();
91
+
92
+ [return: MarshalAs(UnmanagedType.BStr)]
93
+ string GetInstallationPath();
94
+
95
+ [return: MarshalAs(UnmanagedType.BStr)]
96
+ string GetInstallationVersion();
97
+
98
+ [return: MarshalAs(UnmanagedType.BStr)]
99
+ string GetDisplayName([MarshalAs(UnmanagedType.U4), In] int lcid);
100
+
101
+ [return: MarshalAs(UnmanagedType.BStr)]
102
+ string GetDescription([MarshalAs(UnmanagedType.U4), In] int lcid);
103
+
104
+ [return: MarshalAs(UnmanagedType.BStr)]
105
+ string ResolvePath([MarshalAs(UnmanagedType.LPWStr), In] string pwszRelativePath);
106
+
107
+ [return: MarshalAs(UnmanagedType.U4)]
108
+ InstanceState GetState();
109
+
110
+ [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UNKNOWN)]
111
+ ISetupPackageReference[] GetPackages();
112
+
113
+ ISetupPackageReference GetProduct();
114
+
115
+ [return: MarshalAs(UnmanagedType.BStr)]
116
+ string GetProductPath();
117
+
118
+ [return: MarshalAs(UnmanagedType.VariantBool)]
119
+ bool IsLaunchable();
120
+
121
+ [return: MarshalAs(UnmanagedType.VariantBool)]
122
+ bool IsComplete();
123
+
124
+ [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UNKNOWN)]
125
+ ISetupPropertyStore GetProperties();
126
+
127
+ [return: MarshalAs(UnmanagedType.BStr)]
128
+ string GetEnginePath();
129
+ }
130
+
131
+ [Guid("DA8D8A16-B2B6-4487-A2F1-594CCCCD6BF5")]
132
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
133
+ [ComImport]
134
+ public interface ISetupPackageReference
135
+ {
136
+
137
+ [return: MarshalAs(UnmanagedType.BStr)]
138
+ string GetId();
139
+
140
+ [return: MarshalAs(UnmanagedType.BStr)]
141
+ string GetVersion();
142
+
143
+ [return: MarshalAs(UnmanagedType.BStr)]
144
+ string GetChip();
145
+
146
+ [return: MarshalAs(UnmanagedType.BStr)]
147
+ string GetLanguage();
148
+
149
+ [return: MarshalAs(UnmanagedType.BStr)]
150
+ string GetBranch();
151
+
152
+ [return: MarshalAs(UnmanagedType.BStr)]
153
+ string GetType();
154
+
155
+ [return: MarshalAs(UnmanagedType.BStr)]
156
+ string GetUniqueId();
157
+
158
+ [return: MarshalAs(UnmanagedType.VariantBool)]
159
+ bool GetIsExtension();
160
+ }
161
+
162
+ [Guid("c601c175-a3be-44bc-91f6-4568d230fc83")]
163
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
164
+ [ComImport]
165
+ public interface ISetupPropertyStore
166
+ {
167
+
168
+ [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_BSTR)]
169
+ string[] GetNames();
170
+
171
+ object GetValue([MarshalAs(UnmanagedType.LPWStr), In] string pwszName);
172
+ }
173
+
174
+ [Guid("42843719-DB4C-46C2-8E7C-64F1816EFD5B")]
175
+ [CoClass(typeof(SetupConfigurationClass))]
176
+ [ComImport]
177
+ public interface SetupConfiguration : ISetupConfiguration2, ISetupConfiguration
178
+ {
179
+ }
180
+
181
+ [Guid("177F0C4A-1CD3-4DE7-A32C-71DBBB9FA36D")]
182
+ [ClassInterface(ClassInterfaceType.None)]
183
+ [ComImport]
184
+ public class SetupConfigurationClass
185
+ {
186
+ }
187
+
188
+ public static class Main
189
+ {
190
+ public static void PrintJson()
191
+ {
192
+ ISetupConfiguration query = new SetupConfiguration();
193
+ ISetupConfiguration2 query2 = (ISetupConfiguration2)query;
194
+ IEnumSetupInstances e = query2.EnumAllInstances();
195
+
196
+ int pceltFetched;
197
+ ISetupInstance2[] rgelt = new ISetupInstance2[1];
198
+ List<string> instances = new List<string>();
199
+ while (true)
200
+ {
201
+ e.Next(1, rgelt, out pceltFetched);
202
+ if (pceltFetched <= 0)
203
+ {
204
+ Console.WriteLine(String.Format("[{0}]", string.Join(",", instances.ToArray())));
205
+ return;
206
+ }
207
+
208
+ try
209
+ {
210
+ instances.Add(InstanceJson(rgelt[0]));
211
+ }
212
+ catch (COMException)
213
+ {
214
+ // Ignore instances that can't be queried.
215
+ }
216
+ }
217
+ }
218
+
219
+ private static string JsonString(string s)
220
+ {
221
+ return "\"" + s.Replace("\\", "\\\\").Replace("\"", "\\\"") + "\"";
222
+ }
223
+
224
+ private static string InstanceJson(ISetupInstance2 setupInstance2)
225
+ {
226
+ // Visual Studio component directory:
227
+ // https://docs.microsoft.com/en-us/visualstudio/install/workload-and-component-ids
228
+
229
+ StringBuilder json = new StringBuilder();
230
+ json.Append("{");
231
+
232
+ string path = JsonString(setupInstance2.GetInstallationPath());
233
+ json.Append(String.Format("\"path\":{0},", path));
234
+
235
+ string version = JsonString(setupInstance2.GetInstallationVersion());
236
+ json.Append(String.Format("\"version\":{0},", version));
237
+
238
+ List<string> packages = new List<string>();
239
+ foreach (ISetupPackageReference package in setupInstance2.GetPackages())
240
+ {
241
+ string id = JsonString(package.GetId());
242
+ packages.Add(id);
243
+ }
244
+ json.Append(String.Format("\"packages\":[{0}]", string.Join(",", packages.ToArray())));
245
+
246
+ json.Append("}");
247
+ return json.ToString();
248
+ }
249
+ }
250
+ }