@btc-vision/bitcoin 6.3.2 → 6.3.4

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 (144) hide show
  1. package/.gitattributes +2 -2
  2. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
  3. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +3 -0
  4. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +962 -0
  5. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +34 -0
  6. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +24 -0
  7. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +273 -0
  8. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +2 -0
  9. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +204 -0
  10. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +138 -0
  11. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
  12. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +28 -0
  13. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
  14. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
  15. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +116 -0
  16. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +46 -0
  17. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +1080 -0
  18. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +430 -0
  19. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +27 -0
  20. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +450 -0
  21. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +965 -0
  22. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +8 -0
  23. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +5 -0
  24. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +45 -0
  25. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
  26. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
  27. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1272 -0
  28. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1547 -0
  29. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
  30. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +153 -0
  31. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +271 -0
  32. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +574 -0
  33. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +692 -0
  34. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +711 -0
  35. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +171 -0
  36. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +169 -0
  37. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
  38. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
  39. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  40. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +804 -0
  41. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1173 -0
  42. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1318 -0
  43. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +127 -0
  44. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +103 -0
  45. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
  46. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +89 -0
  47. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +57 -0
  48. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2745 -0
  49. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3976 -0
  50. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
  51. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2964 -0
  52. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +67 -0
  53. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1391 -0
  54. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +25 -0
  55. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +3115 -0
  56. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +98 -0
  57. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +771 -0
  58. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1260 -0
  59. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
  60. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
  61. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +373 -0
  62. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1938 -0
  63. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +53 -0
  64. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +302 -0
  65. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3198 -0
  66. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +65 -0
  67. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
  68. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
  69. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
  70. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
  71. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +108 -0
  72. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
  73. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
  74. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
  75. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
  76. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
  77. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +252 -0
  78. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +825 -0
  79. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  80. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
  81. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
  82. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +553 -0
  83. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
  84. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
  85. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +120 -0
  86. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +11 -0
  87. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +261 -0
  88. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
  89. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +227 -0
  90. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +15 -0
  91. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +328 -0
  92. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +150 -0
  93. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +39 -0
  94. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +63 -0
  95. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +310 -0
  96. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +590 -0
  97. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +415 -0
  98. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +26 -0
  99. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +168 -0
  100. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +188 -0
  101. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +146 -0
  102. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +12 -0
  103. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +43 -0
  104. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +81 -0
  105. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
  106. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +51 -0
  107. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +40 -0
  108. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +39 -0
  109. package/browser/index.js +1 -1
  110. package/browser/payments/index.d.ts +2 -0
  111. package/browser/psbt.d.ts +3 -3
  112. package/build/payments/index.d.ts +2 -0
  113. package/build/payments/p2pkh.js +52 -10
  114. package/build/payments/p2sh.js +2 -1
  115. package/build/psbt/psbtutils.d.ts +1 -1
  116. package/build/psbt/psbtutils.js +22 -7
  117. package/build/psbt.d.ts +3 -3
  118. package/build/psbt.js +9 -7
  119. package/coverage/tmp/coverage-31752-1735543485354-0.json +1 -0
  120. package/coverage/tmp/coverage-59920-1735543484555-0.json +1 -0
  121. package/coverage/tmp/coverage-66252-1735543483919-0.json +1 -0
  122. package/coverage/tmp/coverage-68440-1735543485236-0.json +1 -0
  123. package/coverage/tmp/coverage-70588-1735543484426-0.json +1 -0
  124. package/coverage/tmp/coverage-79292-1735543485296-0.json +1 -0
  125. package/coverage/tmp/coverage-80212-1735543483980-0.json +1 -0
  126. package/eslint.config.js +56 -56
  127. package/package.json +1 -1
  128. package/src/address.ts +211 -211
  129. package/src/crypto/crypto-browser.js +75 -75
  130. package/src/crypto/crypto.ts +1 -1
  131. package/src/hooks/HookedSigner.ts +108 -108
  132. package/src/index.ts +86 -86
  133. package/src/networks.ts +235 -235
  134. package/src/payments/embed.ts +55 -55
  135. package/src/payments/index.ts +4 -0
  136. package/src/payments/lazy.ts +28 -28
  137. package/src/payments/p2pk.ts +85 -85
  138. package/src/payments/p2pkh.ts +210 -149
  139. package/src/payments/p2sh.ts +206 -205
  140. package/src/psbt/bip371.ts +441 -441
  141. package/src/psbt/psbtutils.ts +315 -299
  142. package/src/psbt.ts +2187 -2174
  143. package/src/types.ts +122 -122
  144. package/webpack.config.js +79 -79
@@ -0,0 +1,188 @@
1
+ 'use strict'
2
+
3
+ const path = require('path')
4
+ const nopt = require('nopt')
5
+ const log = require('./log')
6
+ const childProcess = require('child_process')
7
+ const { EventEmitter } = require('events')
8
+
9
+ const commands = [
10
+ // Module build commands
11
+ 'build',
12
+ 'clean',
13
+ 'configure',
14
+ 'rebuild',
15
+ // Development Header File management commands
16
+ 'install',
17
+ 'list',
18
+ 'remove'
19
+ ]
20
+
21
+ class Gyp extends EventEmitter {
22
+ /**
23
+ * Export the contents of the package.json.
24
+ */
25
+ package = require('../package.json')
26
+
27
+ /**
28
+ * nopt configuration definitions
29
+ */
30
+ configDefs = {
31
+ help: Boolean, // everywhere
32
+ arch: String, // 'configure'
33
+ cafile: String, // 'install'
34
+ debug: Boolean, // 'build'
35
+ directory: String, // bin
36
+ make: String, // 'build'
37
+ 'msvs-version': String, // 'configure'
38
+ ensure: Boolean, // 'install'
39
+ solution: String, // 'build' (windows only)
40
+ proxy: String, // 'install'
41
+ noproxy: String, // 'install'
42
+ devdir: String, // everywhere
43
+ nodedir: String, // 'configure'
44
+ loglevel: String, // everywhere
45
+ python: String, // 'configure'
46
+ 'dist-url': String, // 'install'
47
+ tarball: String, // 'install'
48
+ jobs: String, // 'build'
49
+ thin: String, // 'configure'
50
+ 'force-process-config': Boolean // 'configure'
51
+ }
52
+
53
+ /**
54
+ * nopt shorthands
55
+ */
56
+ shorthands = {
57
+ release: '--no-debug',
58
+ C: '--directory',
59
+ debug: '--debug',
60
+ j: '--jobs',
61
+ silly: '--loglevel=silly',
62
+ verbose: '--loglevel=verbose',
63
+ silent: '--loglevel=silent'
64
+ }
65
+
66
+ /**
67
+ * expose the command aliases for the bin file to use.
68
+ */
69
+ aliases = {
70
+ ls: 'list',
71
+ rm: 'remove'
72
+ }
73
+
74
+ constructor (...args) {
75
+ super(...args)
76
+
77
+ this.devDir = ''
78
+
79
+ this.commands = commands.reduce((acc, command) => {
80
+ acc[command] = (argv) => require('./' + command)(this, argv)
81
+ return acc
82
+ }, {})
83
+
84
+ Object.defineProperty(this, 'version', {
85
+ enumerable: true,
86
+ get: function () { return this.package.version }
87
+ })
88
+ }
89
+
90
+ /**
91
+ * Parses the given argv array and sets the 'opts',
92
+ * 'argv' and 'command' properties.
93
+ */
94
+ parseArgv (argv) {
95
+ this.opts = nopt(this.configDefs, this.shorthands, argv)
96
+ this.argv = this.opts.argv.remain.slice()
97
+
98
+ const commands = this.todo = []
99
+
100
+ // create a copy of the argv array with aliases mapped
101
+ argv = this.argv.map((arg) => {
102
+ // is this an alias?
103
+ if (arg in this.aliases) {
104
+ arg = this.aliases[arg]
105
+ }
106
+ return arg
107
+ })
108
+
109
+ // process the mapped args into "command" objects ("name" and "args" props)
110
+ argv.slice().forEach((arg) => {
111
+ if (arg in this.commands) {
112
+ const args = argv.splice(0, argv.indexOf(arg))
113
+ argv.shift()
114
+ if (commands.length > 0) {
115
+ commands[commands.length - 1].args = args
116
+ }
117
+ commands.push({ name: arg, args: [] })
118
+ }
119
+ })
120
+ if (commands.length > 0) {
121
+ commands[commands.length - 1].args = argv.splice(0)
122
+ }
123
+
124
+ // support for inheriting config env variables from npm
125
+ const npmConfigPrefix = 'npm_config_'
126
+ Object.keys(process.env).forEach((name) => {
127
+ if (name.indexOf(npmConfigPrefix) !== 0) {
128
+ return
129
+ }
130
+ const val = process.env[name]
131
+ if (name === npmConfigPrefix + 'loglevel') {
132
+ log.logger.level = val
133
+ } else {
134
+ // add the user-defined options to the config
135
+ name = name.substring(npmConfigPrefix.length)
136
+ // gyp@741b7f1 enters an infinite loop when it encounters
137
+ // zero-length options so ensure those don't get through.
138
+ if (name) {
139
+ // convert names like force_process_config to force-process-config
140
+ if (name.includes('_')) {
141
+ name = name.replace(/_/g, '-')
142
+ }
143
+ this.opts[name] = val
144
+ }
145
+ }
146
+ })
147
+
148
+ if (this.opts.loglevel) {
149
+ log.logger.level = this.opts.loglevel
150
+ }
151
+ log.resume()
152
+ }
153
+
154
+ /**
155
+ * Spawns a child process and emits a 'spawn' event.
156
+ */
157
+ spawn (command, args, opts) {
158
+ if (!opts) {
159
+ opts = {}
160
+ }
161
+ if (!opts.silent && !opts.stdio) {
162
+ opts.stdio = [0, 1, 2]
163
+ }
164
+ const cp = childProcess.spawn(command, args, opts)
165
+ log.info('spawn', command)
166
+ log.info('spawn args', args)
167
+ return cp
168
+ }
169
+
170
+ /**
171
+ * Returns the usage instructions for node-gyp.
172
+ */
173
+ usage () {
174
+ return [
175
+ '',
176
+ ' Usage: node-gyp <command> [options]',
177
+ '',
178
+ ' where <command> is one of:',
179
+ commands.map((c) => ' - ' + c + ' - ' + require('./' + c).usage).join('\n'),
180
+ '',
181
+ 'node-gyp@' + this.version + ' ' + path.resolve(__dirname, '..'),
182
+ 'node@' + process.versions.node
183
+ ].join('\n')
184
+ }
185
+ }
186
+
187
+ module.exports = () => new Gyp()
188
+ module.exports.Gyp = Gyp
@@ -0,0 +1,146 @@
1
+ /* eslint-disable n/no-deprecated-api */
2
+
3
+ 'use strict'
4
+
5
+ const semver = require('semver')
6
+ const url = require('url')
7
+ const path = require('path')
8
+ const log = require('./log')
9
+
10
+ // versions where -headers.tar.gz started shipping
11
+ const headersTarballRange = '>= 3.0.0 || ~0.12.10 || ~0.10.42'
12
+ const bitsre = /\/win-(x86|x64|arm64)\//
13
+ const bitsreV3 = /\/win-(x86|ia32|x64)\// // io.js v3.x.x shipped with "ia32" but should
14
+ // have been "x86"
15
+
16
+ // Captures all the logic required to determine download URLs, local directory and
17
+ // file names. Inputs come from command-line switches (--target, --dist-url),
18
+ // `process.version` and `process.release` where it exists.
19
+ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
20
+ let version = (semver.valid(argv[0]) && argv[0]) || gyp.opts.target || defaultVersion
21
+ const versionSemver = semver.parse(version)
22
+ let overrideDistUrl = gyp.opts['dist-url'] || gyp.opts.disturl
23
+ let isNamedForLegacyIojs
24
+ let name
25
+ let distBaseUrl
26
+ let baseUrl
27
+ let libUrl32
28
+ let libUrl64
29
+ let libUrlArm64
30
+ let tarballUrl
31
+ let canGetHeaders
32
+
33
+ if (!versionSemver) {
34
+ // not a valid semver string, nothing we can do
35
+ return { version }
36
+ }
37
+ // flatten version into String
38
+ version = versionSemver.version
39
+
40
+ // defaultVersion should come from process.version so ought to be valid semver
41
+ const isDefaultVersion = version === semver.parse(defaultVersion).version
42
+
43
+ // can't use process.release if we're using --target=x.y.z
44
+ if (!isDefaultVersion) {
45
+ defaultRelease = null
46
+ }
47
+
48
+ if (defaultRelease) {
49
+ // v3 onward, has process.release
50
+ name = defaultRelease.name.replace(/io\.js/, 'iojs') // remove the '.' for directory naming purposes
51
+ } else {
52
+ // old node or alternative --target=
53
+ // semver.satisfies() doesn't like prerelease tags so test major directly
54
+ isNamedForLegacyIojs = versionSemver.major >= 1 && versionSemver.major < 4
55
+ // isNamedForLegacyIojs is required to support Electron < 4 (in particular Electron 3)
56
+ // as previously this logic was used to ensure "iojs" was used to download iojs releases
57
+ // and "node" for node releases. Unfortunately the logic was broad enough that electron@3
58
+ // published release assets as "iojs" so that the node-gyp logic worked. Once Electron@3 has
59
+ // been EOL for a while (late 2019) we should remove this hack.
60
+ name = isNamedForLegacyIojs ? 'iojs' : 'node'
61
+ }
62
+
63
+ // check for the nvm.sh standard mirror env variables
64
+ if (!overrideDistUrl && process.env.NODEJS_ORG_MIRROR) {
65
+ overrideDistUrl = process.env.NODEJS_ORG_MIRROR
66
+ }
67
+
68
+ if (overrideDistUrl) {
69
+ log.verbose('download', 'using dist-url', overrideDistUrl)
70
+ }
71
+
72
+ if (overrideDistUrl) {
73
+ distBaseUrl = overrideDistUrl.replace(/\/+$/, '')
74
+ } else {
75
+ distBaseUrl = 'https://nodejs.org/dist'
76
+ }
77
+ distBaseUrl += '/v' + version + '/'
78
+
79
+ // new style, based on process.release so we have a lot of the data we need
80
+ if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) {
81
+ baseUrl = url.resolve(defaultRelease.headersUrl, './')
82
+ libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major)
83
+ libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major)
84
+ libUrlArm64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'arm64', versionSemver.major)
85
+ tarballUrl = defaultRelease.headersUrl
86
+ } else {
87
+ // older versions without process.release are captured here and we have to make
88
+ // a lot of assumptions, additionally if you --target=x.y.z then we can't use the
89
+ // current process.release
90
+ baseUrl = distBaseUrl
91
+ libUrl32 = resolveLibUrl(name, baseUrl, 'x86', versionSemver.major)
92
+ libUrl64 = resolveLibUrl(name, baseUrl, 'x64', versionSemver.major)
93
+ libUrlArm64 = resolveLibUrl(name, baseUrl, 'arm64', versionSemver.major)
94
+
95
+ // making the bold assumption that anything with a version number >3.0.0 will
96
+ // have a *-headers.tar.gz file in its dist location, even some frankenstein
97
+ // custom version
98
+ canGetHeaders = semver.satisfies(versionSemver, headersTarballRange)
99
+ tarballUrl = url.resolve(baseUrl, name + '-v' + version + (canGetHeaders ? '-headers' : '') + '.tar.gz')
100
+ }
101
+
102
+ return {
103
+ version,
104
+ semver: versionSemver,
105
+ name,
106
+ baseUrl,
107
+ tarballUrl,
108
+ shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'),
109
+ versionDir: (name !== 'node' ? name + '-' : '') + version,
110
+ ia32: {
111
+ libUrl: libUrl32,
112
+ libPath: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl32).path))
113
+ },
114
+ x64: {
115
+ libUrl: libUrl64,
116
+ libPath: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl64).path))
117
+ },
118
+ arm64: {
119
+ libUrl: libUrlArm64,
120
+ libPath: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrlArm64).path))
121
+ }
122
+ }
123
+ }
124
+
125
+ function normalizePath (p) {
126
+ return path.normalize(p).replace(/\\/g, '/')
127
+ }
128
+
129
+ function resolveLibUrl (name, defaultUrl, arch, versionMajor) {
130
+ const base = url.resolve(defaultUrl, './')
131
+ const hasLibUrl = bitsre.test(defaultUrl) || (versionMajor === 3 && bitsreV3.test(defaultUrl))
132
+
133
+ if (!hasLibUrl) {
134
+ // let's assume it's a baseUrl then
135
+ if (versionMajor >= 1) {
136
+ return url.resolve(base, 'win-' + arch + '/' + name + '.lib')
137
+ }
138
+ // prior to io.js@1.0.0 32-bit node.lib lives in /, 64-bit lives in /x64/
139
+ return url.resolve(base, (arch === 'x86' ? '' : arch + '/') + name + '.lib')
140
+ }
141
+
142
+ // else we have a proper url to a .lib, just make sure it's the right arch
143
+ return defaultUrl.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/')
144
+ }
145
+
146
+ module.exports = processRelease
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ async function rebuild (gyp, argv) {
4
+ gyp.todo.push(
5
+ { name: 'clean', args: [] }
6
+ , { name: 'configure', args: argv }
7
+ , { name: 'build', args: [] }
8
+ )
9
+ }
10
+
11
+ module.exports = rebuild
12
+ module.exports.usage = 'Runs "clean", "configure" and "build" all at once'
@@ -0,0 +1,43 @@
1
+ 'use strict'
2
+
3
+ const fs = require('graceful-fs').promises
4
+ const path = require('path')
5
+ const log = require('./log')
6
+ const semver = require('semver')
7
+
8
+ async function remove (gyp, argv) {
9
+ const devDir = gyp.devDir
10
+ log.verbose('remove', 'using node-gyp dir:', devDir)
11
+
12
+ // get the user-specified version to remove
13
+ let version = argv[0] || gyp.opts.target
14
+ log.verbose('remove', 'removing target version:', version)
15
+
16
+ if (!version) {
17
+ throw new Error('You must specify a version number to remove. Ex: "' + process.version + '"')
18
+ }
19
+
20
+ const versionSemver = semver.parse(version)
21
+ if (versionSemver) {
22
+ // flatten the version Array into a String
23
+ version = versionSemver.version
24
+ }
25
+
26
+ const versionPath = path.resolve(gyp.devDir, version)
27
+ log.verbose('remove', 'removing development files for version:', version)
28
+
29
+ // first check if its even installed
30
+ try {
31
+ await fs.stat(versionPath)
32
+ } catch (err) {
33
+ if (err.code === 'ENOENT') {
34
+ return 'version was already uninstalled: ' + version
35
+ }
36
+ throw err
37
+ }
38
+
39
+ await fs.rm(versionPath, { recursive: true, force: true })
40
+ }
41
+
42
+ module.exports = remove
43
+ module.exports.usage = 'Removes the node development files for the specified version'
@@ -0,0 +1,81 @@
1
+ 'use strict'
2
+
3
+ const cp = require('child_process')
4
+ const path = require('path')
5
+ const { openSync, closeSync } = require('graceful-fs')
6
+ const log = require('./log')
7
+
8
+ const execFile = async (...args) => new Promise((resolve) => {
9
+ const child = cp.execFile(...args, (...a) => resolve(a))
10
+ child.stdin.end()
11
+ })
12
+
13
+ async function regGetValue (key, value, addOpts) {
14
+ const outReValue = value.replace(/\W/g, '.')
15
+ const outRe = new RegExp(`^\\s+${outReValue}\\s+REG_\\w+\\s+(\\S.*)$`, 'im')
16
+ const reg = path.join(process.env.SystemRoot, 'System32', 'reg.exe')
17
+ const regArgs = ['query', key, '/v', value].concat(addOpts)
18
+
19
+ log.silly('reg', 'running', reg, regArgs)
20
+ const [err, stdout, stderr] = await execFile(reg, regArgs, { encoding: 'utf8' })
21
+
22
+ log.silly('reg', 'reg.exe stdout = %j', stdout)
23
+ if (err || stderr.trim() !== '') {
24
+ log.silly('reg', 'reg.exe err = %j', err && (err.stack || err))
25
+ log.silly('reg', 'reg.exe stderr = %j', stderr)
26
+ if (err) {
27
+ throw err
28
+ }
29
+ throw new Error(stderr)
30
+ }
31
+
32
+ const result = outRe.exec(stdout)
33
+ if (!result) {
34
+ log.silly('reg', 'error parsing stdout')
35
+ throw new Error('Could not parse output of reg.exe')
36
+ }
37
+
38
+ log.silly('reg', 'found: %j', result[1])
39
+ return result[1]
40
+ }
41
+
42
+ async function regSearchKeys (keys, value, addOpts) {
43
+ for (const key of keys) {
44
+ try {
45
+ return await regGetValue(key, value, addOpts)
46
+ } catch {
47
+ continue
48
+ }
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Returns the first file or directory from an array of candidates that is
54
+ * readable by the current user, or undefined if none of the candidates are
55
+ * readable.
56
+ */
57
+ function findAccessibleSync (logprefix, dir, candidates) {
58
+ for (let next = 0; next < candidates.length; next++) {
59
+ const candidate = path.resolve(dir, candidates[next])
60
+ let fd
61
+ try {
62
+ fd = openSync(candidate, 'r')
63
+ } catch (e) {
64
+ // this candidate was not found or not readable, do nothing
65
+ log.silly(logprefix, 'Could not open %s: %s', candidate, e.message)
66
+ continue
67
+ }
68
+ closeSync(fd)
69
+ log.silly(logprefix, 'Found readable %s', candidate)
70
+ return candidate
71
+ }
72
+
73
+ return undefined
74
+ }
75
+
76
+ module.exports = {
77
+ execFile,
78
+ regGetValue,
79
+ regSearchKeys,
80
+ findAccessibleSync
81
+ }
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+
3
+ pkgs=(
4
+ "com.apple.pkg.DeveloperToolsCLILeo" # standalone
5
+ "com.apple.pkg.DeveloperToolsCLI" # from XCode
6
+ "com.apple.pkg.CLTools_Executables" # Mavericks
7
+ )
8
+
9
+ for pkg in "${pkgs[@]}"; do
10
+ output=$(/usr/sbin/pkgutil --pkg-info "$pkg" 2>/dev/null)
11
+ if [ "$output" ]; then
12
+ version=$(echo "$output" | grep 'version' | cut -d' ' -f2)
13
+ break
14
+ fi
15
+ done
16
+
17
+ if [ "$version" ]; then
18
+ echo "Command Line Tools version: $version"
19
+ else
20
+ echo >&2 'Command Line Tools not found'
21
+ fi
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "node-gyp",
3
+ "description": "Node.js native addon build tool",
4
+ "license": "MIT",
5
+ "keywords": [
6
+ "native",
7
+ "addon",
8
+ "module",
9
+ "c",
10
+ "c++",
11
+ "bindings",
12
+ "gyp"
13
+ ],
14
+ "version": "10.2.0",
15
+ "installVersion": 11,
16
+ "author": "Nathan Rajlich <nathan@tootallnate.net> (http://tootallnate.net)",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git://github.com/nodejs/node-gyp.git"
20
+ },
21
+ "preferGlobal": true,
22
+ "bin": "./bin/node-gyp.js",
23
+ "main": "./lib/node-gyp.js",
24
+ "dependencies": {
25
+ "env-paths": "^2.2.0",
26
+ "exponential-backoff": "^3.1.1",
27
+ "glob": "^10.3.10",
28
+ "graceful-fs": "^4.2.6",
29
+ "make-fetch-happen": "^13.0.0",
30
+ "nopt": "^7.0.0",
31
+ "proc-log": "^4.1.0",
32
+ "semver": "^7.3.5",
33
+ "tar": "^6.2.1",
34
+ "which": "^4.0.0"
35
+ },
36
+ "engines": {
37
+ "node": "^16.14.0 || >=18.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "bindings": "^1.5.0",
41
+ "cross-env": "^7.0.3",
42
+ "mocha": "^10.2.0",
43
+ "nan": "^2.14.2",
44
+ "require-inject": "^1.4.4",
45
+ "standard": "^17.0.0"
46
+ },
47
+ "scripts": {
48
+ "lint": "standard \"*/*.js\" \"test/**/*.js\" \".github/**/*.js\"",
49
+ "test": "cross-env NODE_GYP_NULL_LOGGER=true mocha --timeout 15000 test/test-download.js test/test-*"
50
+ }
51
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "packages": {
3
+ ".": {
4
+ "include-component-in-tag": false,
5
+ "release-type": "node",
6
+ "changelog-sections": [
7
+ { "type": "feat", "section": "Features", "hidden": false },
8
+ { "type": "fix", "section": "Bug Fixes", "hidden": false },
9
+ { "type": "bin", "section": "Core", "hidden": false },
10
+ { "type": "gyp", "section": "Core", "hidden": false },
11
+ { "type": "lib", "section": "Core", "hidden": false },
12
+ { "type": "src", "section": "Core", "hidden": false },
13
+ { "type": "test", "section": "Tests", "hidden": false },
14
+ { "type": "build", "section": "Core", "hidden": false },
15
+ { "type": "clean", "section": "Core", "hidden": false },
16
+ { "type": "configure", "section": "Core", "hidden": false },
17
+ { "type": "install", "section": "Core", "hidden": false },
18
+ { "type": "list", "section": "Core", "hidden": false },
19
+ { "type": "rebuild", "section": "Core", "hidden": false },
20
+ { "type": "remove", "section": "Core", "hidden": false },
21
+ { "type": "deps", "section": "Core", "hidden": false },
22
+ { "type": "python", "section": "Core", "hidden": false },
23
+ { "type": "lin", "section": "Core", "hidden": false },
24
+ { "type": "linux", "section": "Core", "hidden": false },
25
+ { "type": "mac", "section": "Core", "hidden": false },
26
+ { "type": "macos", "section": "Core", "hidden": false },
27
+ { "type": "win", "section": "Core", "hidden": false },
28
+ { "type": "windows", "section": "Core", "hidden": false },
29
+ { "type": "zos", "section": "Core", "hidden": false },
30
+ { "type": "doc", "section": "Doc", "hidden": false },
31
+ { "type": "docs", "section": "Doc", "hidden": false },
32
+ { "type": "readme", "section": "Doc", "hidden": false },
33
+ { "type": "chore", "section": "Miscellaneous", "hidden": false },
34
+ { "type": "refactor", "section": "Miscellaneous", "hidden": false },
35
+ { "type": "ci", "section": "Miscellaneous", "hidden": false },
36
+ { "type": "meta", "section": "Miscellaneous", "hidden": false }
37
+ ]
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,39 @@
1
+ /*
2
+ * When this file is linked to a DLL, it sets up a delay-load hook that
3
+ * intervenes when the DLL is trying to load the host executable
4
+ * dynamically. Instead of trying to locate the .exe file it'll just
5
+ * return a handle to the process image.
6
+ *
7
+ * This allows compiled addons to work when the host executable is renamed.
8
+ */
9
+
10
+ #ifdef _MSC_VER
11
+
12
+ #pragma managed(push, off)
13
+
14
+ #ifndef WIN32_LEAN_AND_MEAN
15
+ #define WIN32_LEAN_AND_MEAN
16
+ #endif
17
+
18
+ #include <windows.h>
19
+
20
+ #include <delayimp.h>
21
+ #include <string.h>
22
+
23
+ static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo* info) {
24
+ HMODULE m;
25
+ if (event != dliNotePreLoadLibrary)
26
+ return NULL;
27
+
28
+ if (_stricmp(info->szDll, HOST_BINARY) != 0)
29
+ return NULL;
30
+
31
+ m = GetModuleHandle(NULL);
32
+ return (FARPROC) m;
33
+ }
34
+
35
+ decltype(__pfnDliNotifyHook2) __pfnDliNotifyHook2 = load_exe_hook;
36
+
37
+ #pragma managed(pop)
38
+
39
+ #endif