{"versions":{"0.4.2":{"name":"@discordjs/node-pre-gyp","version":"0.4.2","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts","lint:fix":"eslint lib scripts --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","https-proxy-agent":"^5.0.0","make-dir":"^3.1.0","node-fetch":"^2.6.5","nopt":"^5.0.0","npmlog":"^5.0.1","rimraf":"^3.0.2","semver":"^7.3.5","tar":"^6.1.11"},"devDependencies":{"eslint":"^8.2.0","eslint-config-aqua":"^9.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","prettier":"^2.4.1"},"gitHead":"9bcf321aa2fbcb1dab543f61c368ea1cde8afad3","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.4.2","_nodeVersion":"16.13.0","_npmVersion":"8.1.1","dist":{"integrity":"sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA==","shasum":"37dd27f8d353eeb87372fcce059c5249550b37ab","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz","fileCount":35,"unpackedSize":126807,"size":31658,"noattachment":false},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.4.2_1636721913813_0.727790679735427"},"_hasShrinkwrap":false,"publish_time":1636721913966,"_cnpm_publish_time":1636721913966,"_cnpmcore_publish_time":"2021-12-16T20:21:49.803Z","deprecated":"no longer supported","contributors":[]},"0.4.1":{"name":"@discordjs/node-pre-gyp","version":"0.4.1","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","https-proxy-agent":"^5.0.0","make-dir":"^3.1.0","node-fetch":"^2.6.1","nopt":"^5.0.0","npmlog":"^5.0.0","rimraf":"^3.0.2","semver":"^7.3.5","tar":"^6.1.8"},"devDependencies":{"eslint":"^7.32.0","eslint-config-aqua":"^9.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.2"},"gitHead":"a2b508da6b597462d312deed10503203db8420f1","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.4.1","_nodeVersion":"16.6.1","_npmVersion":"7.20.5","dist":{"shasum":"93c8d1dc391aef8ff116b6daa7bbeffd152f1018","size":31572,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.1.tgz","integrity":"sha512-PLYLPG3R+m9QlMROOjdy2htQq54g6f9vRb1xPfZ97CL53yj0uNTfpB/jtY/AXY6OKNtZtrre5SKjei8Hcc44HQ=="},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.4.1_1629279629461_0.4129878988658011"},"_hasShrinkwrap":false,"publish_time":1629279629626,"_cnpm_publish_time":1629279629626,"_cnpmcore_publish_time":"2021-12-16T20:21:50.083Z","deprecated":"no longer supported","contributors":[]},"0.4.0":{"name":"@discordjs/node-pre-gyp","version":"0.4.0","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","https-proxy-agent":"^5.0.0","make-dir":"^3.1.0","node-fetch":"^2.6.1","nopt":"^5.0.0","npmlog":"^4.1.2","rimraf":"^3.0.2","semver":"^7.3.5","tar":"^6.1.0"},"devDependencies":{"eslint":"^7.28.0","eslint-config-aqua":"^9.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","prettier":"^2.3.1"},"gitHead":"383494a67f139492bcab8784bc83015ebbd044ea","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.4.0","_nodeVersion":"16.3.0","_npmVersion":"7.16.0","dist":{"shasum":"32740b1ff362c86a280877df9637313c7bf250ee","size":31522,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.0.tgz","integrity":"sha512-CXLpoM2hgS94i9+EAVowR92y8o3KdKc9fmoe8/FTp5XTzvoXzJln3+Ctl0oBpE6c9+11zd9oJnZPdkkOBkDPSA=="},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.4.0_1623337271821_0.940694040783723"},"_hasShrinkwrap":false,"publish_time":1623337271953,"_cnpm_publish_time":1623337271953,"_cnpmcore_publish_time":"2021-12-16T20:21:50.423Z","deprecated":"no longer supported","contributors":[]},"0.3.2":{"name":"@discordjs/node-pre-gyp","version":"0.3.2","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","http-proxy-agent":"^4.0.1","make-dir":"^3.1.0","node-fetch":"^2.6.1","nopt":"^5.0.0","npmlog":"^4.1.2","rimraf":"^3.0.2","semver":"^7.3.4","tar":"^6.1.0"},"devDependencies":{"@mapbox/cloudfriend":"^4.6.0","action-walk":"^2.2.0","aws-sdk":"^2.867.0","eslint":"^7.21.0","eslint-config-aqua":"^8.1.2","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^3.3.1","nock":"^12.0.3","node-gyp":"^7.1.2","prettier":"^2.2.1","prism-media":"^1.2.8","tape":"^5.2.2","typescript":"^4.2.3"},"gitHead":"8384989d6fab78110ac5a079736a86dc9423a388","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.3.2","_nodeVersion":"15.11.0","_npmVersion":"7.6.0","dist":{"shasum":"e882e803b2be444fb557c3b46d9bbe75a053bc9c","size":32428,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.3.2.tgz","integrity":"sha512-NqRvPz0X+/3h+6ClElrSfvsD5XEG9ljYzXhzyo81DslVkVKzmmxX9FLs3MUr9qI7p53DG1eYru633qosrOqMyA=="},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.3.2_1616156738614_0.2220031298625651"},"_hasShrinkwrap":false,"publish_time":1616156738809,"_cnpm_publish_time":1616156738809,"_cnpmcore_publish_time":"2021-12-16T20:21:50.936Z","deprecated":"no longer supported","contributors":[]},"0.3.1":{"name":"@discordjs/node-pre-gyp","version":"0.3.1","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","http-proxy-agent":"^4.0.1","make-dir":"^3.1.0","node-fetch":"^2.6.1","nopt":"^5.0.0","npmlog":"^4.1.2","rimraf":"^3.0.2","semver":"^7.3.4","tar":"^6.1.0"},"devDependencies":{"@mapbox/cloudfriend":"^4.6.0","action-walk":"^2.2.0","aws-sdk":"^2.867.0","eslint":"^7.21.0","eslint-config-aqua":"^8.1.2","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^3.3.1","nock":"^12.0.3","node-gyp":"^7.1.2","prettier":"^2.2.1","prism-media":"^1.2.8","tape":"^5.2.2","typescript":"^4.2.3"},"eslintConfig":{"extends":"aqua/prettier/node","rules":{"strict":0,"func-names":0,"no-multi-assign":0,"eqeqeq":0,"no-eq-null":0,"func-name-matching":0,"no-implicit-coercion":0,"prefer-rest-params":0,"prefer-spread":0,"no-use-before-define":0,"no-var":0,"block-scoped-var":0,"no-redeclare":0,"no-undef":0}},"gitHead":"4465db5500cf338b6f6252df31f874213f2135fd","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.3.1","_nodeVersion":"15.11.0","_npmVersion":"7.6.0","dist":{"shasum":"a2133ec96e0d926b4501ba3b8ca8e8970b038f71","size":41798,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.3.1.tgz","integrity":"sha512-mLQO+sp3sPa64lf9xF4/VNvdAGfE/GLe+eBI+g6V1pLCFtTBC/ChAXdw2tfA3Er6kuBwzRTW7GaJmj29Prbk8g=="},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.3.1_1616155830092_0.5124762695627092"},"_hasShrinkwrap":false,"publish_time":1616155830318,"_cnpm_publish_time":1616155830318,"_cnpmcore_publish_time":"2021-12-16T20:21:51.273Z","deprecated":"no longer supported","contributors":[]},"0.3.0":{"name":"@discordjs/node-pre-gyp","version":"0.3.0","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","mkdirp":"^0.5.5","needle":"^2.6.0","nopt":"^5.0.0","npmlog":"^4.1.2","rimraf":"^3.0.2","semver":"^7.3.4","tar":"^6.1.0"},"devDependencies":{"@mapbox/cloudfriend":"^4.6.0","action-walk":"^2.2.0","aws-sdk":"^2.867.0","eslint":"^7.21.0","eslint-config-aqua":"^8.1.2","eslint-config-prettier":"^8.1.0","eslint-plugin-prettier":"^3.3.1","nock":"^12.0.3","node-gyp":"^7.1.2","prettier":"^2.2.1","prism-media":"^1.2.8","tape":"^5.2.2","typescript":"^4.2.3"},"eslintConfig":{"extends":"aqua/prettier/node","rules":{"strict":0,"func-names":0,"no-multi-assign":0,"eqeqeq":0,"no-eq-null":0,"func-name-matching":0,"no-implicit-coercion":0,"prefer-rest-params":0,"prefer-spread":0,"no-use-before-define":0,"no-var":0,"block-scoped-var":0,"no-redeclare":0,"no-undef":0}},"gitHead":"259fc3cc534b95eb239feb9498840bdccb821fae","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.3.0","_nodeVersion":"15.11.0","_npmVersion":"7.6.0","dist":{"shasum":"c347d1a67b4c2b9d44a6d703ecb3da3584a8aa30","size":41782,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.3.0.tgz","integrity":"sha512-x5ZCT1ij1FI2LT91QggnN74+dIQ18zJVPjN2sy4s0bCpSDxKN7qRSG19sb8yODZruisnJ9fdKkPlzhyum4ddqA=="},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.3.0_1616155606682_0.2552812966568523"},"_hasShrinkwrap":false,"publish_time":1616155606857,"_cnpm_publish_time":1616155606857,"_cnpmcore_publish_time":"2021-12-16T20:21:51.537Z","deprecated":"no longer supported","contributors":[]},"0.2.0":{"name":"@discordjs/node-pre-gyp","version":"0.2.0","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","mkdirp":"^0.5.5","needle":"^2.6.0","nopt":"^5.0.0","npmlog":"^4.1.2","rc":"^1.2.8","rimraf":"^3.0.2","semver":"^7.3.4","tar":"^6.1.0"},"devDependencies":{"eslint":"^7.18.0","eslint-config-aqua":"^8.0.0","eslint-config-prettier":"^7.2.0","eslint-plugin-prettier":"^3.3.1","node-gyp":"^7.1.2","prettier":"^2.2.1","prism-media":"^1.2.3","typescript":"^4.1.3"},"gitHead":"d2bc03ca617abbe2a658e86783236bb430550042","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.2.0","_nodeVersion":"15.4.0","_npmVersion":"7.2.0","dist":{"shasum":"25e9bcb38cb12cc3807edf1d7502443b29082104","size":32122,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.2.0.tgz","integrity":"sha512-2PIodKAuDLZZ8LGVFiQkZicco9PGcUICU/NlMqNMXuy91qMGKosOkDkzj4x+Kl1WYR1r2Y/fyOIgje5zezavYQ=="},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.2.0_1611492665226_0.981165152357709"},"_hasShrinkwrap":false,"publish_time":1611492665332,"_cnpm_publish_time":1611492665332,"_cnpmcore_publish_time":"2021-12-16T20:21:51.846Z","deprecated":"no longer supported","contributors":[]},"0.1.0":{"name":"@discordjs/node-pre-gyp","version":"0.1.0","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"lint":"eslint lib scripts test","lint:fix":"eslint lib scripts test --fix","update-crosswalk":"node scripts/abi_crosswalk.js","test":"tape test/*test.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^1.0.3","mkdirp":"^0.5.5","needle":"^2.4.1","nopt":"^4.0.3","npm-packlist":"^1.4.8","npmlog":"^4.1.2","rc":"^1.2.8","rimraf":"^3.0.2","semver":"^7.3.0","tar":"^6.0.2"},"devDependencies":{"eslint":"^6.8.0","eslint-config-aqua":"^7.2.3","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","nock":"^12.0.3","node-gyp":"^6.1.0","prettier":"^2.0.5","prism-media":"^1.2.1","tape":"^5.0.0","typescript":"^3.8.3"},"eslintConfig":{"extends":"aqua/prettier/node","rules":{"strict":0,"func-names":0,"no-multi-assign":0,"eqeqeq":0,"no-eq-null":0,"func-name-matching":0,"no-implicit-coercion":0,"prefer-rest-params":0,"prefer-spread":0,"no-use-before-define":0,"no-var":0,"block-scoped-var":0,"no-redeclare":0,"no-undef":0}},"gitHead":"392149606a4c7bf6bb7b32471f113151dc6b1618","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.1.0","_nodeVersion":"14.1.0","_npmVersion":"6.14.4","dist":{"shasum":"762b3b40be8567186bd7e79084befec4738a9e89","size":33867,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz","integrity":"sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg=="},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amishshah.2k@gmail.com"}],"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.1.0_1588377751190_0.052470943908158985"},"_hasShrinkwrap":false,"publish_time":1588377751285,"_cnpm_publish_time":1588377751285,"_cnpmcore_publish_time":"2021-12-16T20:21:52.152Z","deprecated":"no longer supported","contributors":[]},"0.4.3":{"name":"@discordjs/node-pre-gyp","version":"0.4.3","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^2.0.0","https-proxy-agent":"^5.0.0","make-dir":"^3.1.0","node-fetch":"^2.6.7","nopt":"^5.0.0","npmlog":"^5.0.1","rimraf":"^3.0.2","semver":"^7.3.5","tar":"^6.1.11"},"devDependencies":{"eslint":"^8.2.0","eslint-config-aqua":"^9.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","prettier":"^2.4.1"},"gitHead":"b12f4ae2ca5f03d7a20c538a5c75129f7b70ee2c","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.4.3","_nodeVersion":"16.15.1","_npmVersion":"8.12.2","dist":{"integrity":"sha512-RJtO4wtW6Ndaqwm9UZ9/F1nC82dBE5rZvTR/wki29dFVjs27JFzbjZBxKUt2+T0iomlqgaNcPJFyAE+zGPO/MQ==","shasum":"f1461ecefeab0e2456f9e25f34c205f00fdf4f66","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.3.tgz","fileCount":35,"unpackedSize":128637,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN840nStQDS21XMPskW76s3z0pXvhGLX49ZEu8niC9EgIgXjRMXB7DVRrnH3Pbs9R7n0SWFcUCv5YhkREjPeDlZbE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiwbOiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoACQ//bSW+OGtCBLDrjZ8kxEyNnTvisnkuGmPyHmDQ7zRvulhH32oc\r\nSnP1DK2lGqDOau1kgPpFhEtJDW41FLO7kNQ5dvJYKSLBpJthw3w0oSk9NmHm\r\nOaGR9tvzGzwcgwffL0vpfgUnDAQG3k5C2+ICp3l0A3wmd6Ld3urQoeWNr27U\r\ne1codzbSWFdTS/NpRbefCBL8UWVQK16SXgn9cFlLFl9nFdIVAYGdkBaSZNdM\r\n4IRJuRUPxcdaOVWukqYcA5zsYabD3AKCha2Izty98sQo0LCZesgrqVSb0yih\r\nfr4StPrfUtyk2k5Ps6FQq+wJxyZrkxsDM8VDcq1zB6iWux8EsaUSdHsgFme/\r\nRM74KOsEtFHMbPgDbKugyzb67s89RDGmK2IexJ5IsIEKU9q6gWhFLoKKCUDT\r\nHkdDzdp6oa66rL/GNs/aZvlPHbNbcLNnUCauadZIqd6G4nm2XwbiYFYhKpBa\r\nEdL3Y3+HVMuIe/RO2SNSqUgQqzhZkuJ93LSZzbxqcqSNs91UwlF9jy6AFwjy\r\nHtCfJQrS+X/2EKQyz37HqoRnfhlgEWDuQs33YdkKmX4UeMI6AgdiY836eC2y\r\npVwAakSKIKxxM6bcAvkvkYcJFvxTmItntlLI7XuXVw+RhdC2MrOATEDvBfzK\r\nu6+ofBiAlecyPdUOZp9MIyJlEXZUTLnAtm8=\r\n=TFfV\r\n-----END PGP SIGNATURE-----\r\n","size":31757},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amish@shah.gg"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.4.3_1656861602097_0.9584220351819623"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-07-03T18:16:53.915Z","deprecated":"no longer supported","contributors":[]},"0.4.4":{"name":"@discordjs/node-pre-gyp","version":"0.4.4","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^2.0.0","https-proxy-agent":"^5.0.0","make-dir":"^3.1.0","node-fetch":"^2.6.7","nopt":"^5.0.0","npmlog":"^5.0.1","rimraf":"^3.0.2","semver":"^7.3.5","tar":"^6.1.11"},"devDependencies":{"eslint":"^8.2.0","eslint-config-aqua":"^9.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","prettier":"^2.4.1"},"gitHead":"648f758262be5c2d85cc6b65666219966f85ce58","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.4.4","_nodeVersion":"16.15.1","_npmVersion":"8.12.2","dist":{"integrity":"sha512-x569MMtdk6jdGo2S58iiZoyv4p/N2Ju8Nh6vvzZb1wyouV7IE3VuU0hg2kqUmTfD0z6r4uD6acvMTuc+iA3f8g==","shasum":"33eea1038784ffc5715ef775e4f9d6cffaa96c73","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.4.tgz","fileCount":35,"unpackedSize":128643,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1PfXi8KIZctZaKYWo3qKhwq6l3gVODsJTJ8fkTpsnpAiEAoKKVBylE2/IQXY2bn3I7hdMerqsoGvdYxcjkxN+kUJY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiwbWFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6LhAAgYo/Mp7uzz0YEfAgHSBBKT4+CqkcEnMVThEFtdoGwtK5kl0q\r\nq8wb8wMECh115m+YIrQODCqVkhY7saYIbFtAFzBfW6iOovej/FIIeSdRQcKN\r\nD/ZDYJgV7gZqQLz3N/ZYwKKR9RQxCtn58Q0HSXp/MLrNSvKzy0ONX/5H9S3X\r\nNdf16DcY9m7ViIkQTH4UdC4/dkBezD5zq0BbtY5S/7gkteZ5HmZCRs7tPYdN\r\nAaHxKbh1WUon1/tMtzmuwNfPFQ6aR+7UP8OslBiGvxALgt0U3lJkU55UdfiR\r\nZ7TgwQYOoArrxMpQWz1i6qhqHmJM+HHCmKdiD0q3LYJGBw53n760S5IZNH9r\r\nij6kPjvogNOb8l0ZMzcJu6HV/n8GiZJZxibPkvSFk48JP9SE29Ciwklpnbop\r\ncyrwEUXaEcz9UMSsmOkrSprkJjO4eBq068pdVJYZ4JIiViKmAzM93Dej/xbM\r\ndIcuOhSO228AyeruC2wyRg2uNLFzVGmQTBJB972vUbTNRXozmQn+xmTrmBeH\r\nKVOXvSABVObbeHyidyz/rfWlBo3PouUWsR9d1GoulbmZCmC3Jxhse3YSK+Tn\r\nE+54o4gH1OTGkUzVA6oZWDsPGRmA17ctCWBYSuVfFo4Aui7NoC0f3+hTotkg\r\nVxI6PCX19IzKHB+FJlHD4L1yLBAk6zKVRvE=\r\n=hvWR\r\n-----END PGP SIGNATURE-----\r\n","size":31759},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amish@shah.gg"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.4.4_1656862085749_0.15429320110660694"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-07-03T18:16:54.684Z","contributors":[]},"0.4.5":{"name":"@discordjs/node-pre-gyp","version":"0.4.5","description":"Node.js native addon binary install tool","main":"./lib/node-pre-gyp.js","bin":{"node-pre-gyp":"bin/node-pre-gyp"},"author":{"name":"Dane Springmeyer","email":"dane@mapbox.com"},"license":"BSD-3-Clause","scripts":{"update-crosswalk":"node scripts/abi_crosswalk.js"},"keywords":["native","addon","module","c","c++","bindings","binary"],"repository":{"type":"git","url":"git+https://github.com/discordjs/node-pre-gyp.git"},"dependencies":{"detect-libc":"^2.0.0","https-proxy-agent":"^5.0.0","make-dir":"^3.1.0","node-fetch":"^2.6.7","nopt":"^5.0.0","npmlog":"^5.0.1","rimraf":"^3.0.2","semver":"^7.3.5","tar":"^6.1.11"},"devDependencies":{"eslint":"^8.2.0","eslint-config-aqua":"^9.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","prettier":"^2.4.1"},"gitHead":"5012ad7fed9fb13e38591855d52f111833cd3f8c","bugs":{"url":"https://github.com/discordjs/node-pre-gyp/issues"},"homepage":"https://github.com/discordjs/node-pre-gyp#readme","_id":"@discordjs/node-pre-gyp@0.4.5","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==","shasum":"b33e38cedd821268c75923641783c68fcd1b55ae","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz","fileCount":35,"unpackedSize":128648,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICVxmrGqBwbqHtW/EuTNgEOvkqGPxguaHeieWwKJuBONAiANtDezyhvO9m0GyU06FxaURXHJUcvap5t5DPt7ImPwdA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUMSMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokPw/+NMflEfCEikBVL02hxlJVPnTaq/LjbEKU5198NYZh601/jHoM\r\nZd/q7B8zG5Egx2/vqYiRIqw+a0Py9HrNyUlPmKQ2a0KvKb4Vdpa30kF7NdT+\r\nL/lNHmguud4t6sryJE80+ZQ2eTta9qD++ZeNZWAexPY7A5MM753HvXjpLt5B\r\nKWt8iYovsJL8H0ISF2Qi8ca/OyHwc7lnDsBLXvYr/I/aM0gu5+jT1gOGgSAo\r\n70YshuZysxDAN4eM1pf8hPpsT2dlRjwYJu0CFhm8sPWAiRKsSETsZxhNec56\r\nznM7HOk0U3idBNdPc7nVliQqEe+3A6PgOuabigOB5QWpmcazE0P3rVRQVtFx\r\nfGGyLl5D6mrq4tFooewTfBujqcvVeZ+G+QZ1pNdDbtLiy4I/U3fUV86zBDfQ\r\nLDor6SW3BFv6SzTauI0RKcBy+loV7qwAmvjfDCUy4SPqIy0wf91eh4In4DBE\r\nvdTXObicVivgxSQs2RgIv5GpKQotoLC5mgtPgJ630CiMpuo4pwXK3jx01Icw\r\nn4wWhfMpbxDrLWH08gRwo0Jy/vGatp8q0wxBG/NLnfWzv6u4W2elJ9FKj+g0\r\nL3G3PKiu8bLYy2CXM/sreTqwJ0PdTcLvqKk4CxoaC7lTRffCAPLPqAKgMWtG\r\nBQkN9Aliu8N2VWCrHTRwO09ujfLaCBGFooY=\r\n=84bE\r\n-----END PGP SIGNATURE-----\r\n","size":31769},"_npmUser":{"name":"anonymous","email":"icrawltogo@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"icrawltogo@gmail.com"},{"name":"anonymous","email":"amish@shah.gg"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-pre-gyp_0.4.5_1666237579948_0.9624017261896072"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-10-20T03:51:40.691Z","contributors":[]}},"dist-tags":{"latest":"0.4.5"},"name":"@discordjs/node-pre-gyp","time":{"created":"2022-01-27T09:08:41.325Z","modified":"2022-10-25T17:23:59.543Z","0.4.2":"2021-11-12T12:58:33.966Z","0.4.1":"2021-08-18T09:40:29.626Z","0.4.0":"2021-06-10T15:01:11.953Z","0.3.2":"2021-03-19T12:25:38.809Z","0.3.1":"2021-03-19T12:10:30.318Z","0.3.0":"2021-03-19T12:06:46.857Z","0.2.0":"2021-01-24T12:51:05.332Z","0.1.0":"2020-05-02T00:02:31.285Z","0.4.3":"2022-07-03T15:20:02.586Z","0.4.4":"2022-07-03T15:28:05.906Z","0.4.5":"2022-10-20T03:46:20.095Z"},"readme":"# @discordjs/node-pre-gyp ![Test](https://github.com/discordjs/node-pre-gyp/workflows/Test/badge.svg)\n\n> node-pre-gyp makes it easy to publish and install Node.js C++ addons from binaries\n\n`@discordjs/node-pre-gyp` stands between [npm](https://github.com/npm/npm) and [node-gyp](https://github.com/Tootallnate/node-gyp) and offers a cross-platform method of binary deployment.\n\n# Features\n\n- A command line tool called `node-pre-gyp` that can install your package's C++ module from a binary.\n- A variety of developer targeted commands for packaging, testing, and publishing binaries.\n- A JavaScript module that can dynamically require your installed binary: `require('@discordjs/node-pre-gyp').find`\n\nFor a hello world example of a module packaged with `node-pre-gyp` see <https://github.com/springmeyer/node-addon-example> and [the wiki ](https://github.com/mapbox/node-pre-gyp/wiki/Modules-using-node-pre-gyp) for real world examples.\n\n# Credits\n\n- The module is modeled after [node-gyp](https://github.com/Tootallnate/node-gyp) by [@Tootallnate](https://github.com/Tootallnate)\n- Motivation for initial development came from [@ErisDS](https://github.com/ErisDS) and the [Ghost Project](https://github.com/TryGhost/Ghost).\n- Development is sponsored by [Mapbox](https://www.mapbox.com/)\n\n# FAQ\n\nSee the [Frequently Ask Questions](https://github.com/mapbox/node-pre-gyp/wiki/FAQ).\n\n# Usage\n\n## Commands\n\nView all possible commands:\n\n    node-pre-gyp --help\n\n- clean - Remove the entire folder containing the compiled .node module\n- install - Install pre-built binary for module\n- reinstall - Run \"clean\" and \"install\" at once\n- build - Compile the module by dispatching to node-gyp or nw-gyp\n- rebuild - Run \"clean\" and \"build\" at once\n- package - Pack binary into tarball\n- testpackage - Test that the staged package is valid\n\nYou can also chain commands:\n\n```bash\nnode-pre-gyp clean build package\n```\n\n## Options\n\nOptions include:\n\n- `-C/--directory`: run the command in this directory\n- `--build-from-source`: build from source instead of using pre-built binary\n- `--update-binary`: reinstall by replacing previously installed local binary with remote binary\n- `--runtime=electron`: customize the runtime: `node` and `electron` are the valid options\n- `--fallback-to-build`: fallback to building from source if pre-built binary is not available\n- `--target=0.4.0`: Pass the target node or node-webkit version to compile against\n- `--target_arch=ia32`: Pass the target arch and override the host `arch`. Any value that is [supported by Node.js](https://nodejs.org/api/os.html#osarch) is valid.\n- `--target_platform=win32`: Pass the target platform and override the host `platform`. Valid values are `linux`, `darwin`, `win32`, `sunos`, `freebsd`, `openbsd`, and `aix`.\n\nBoth `--build-from-source` and `--fallback-to-build` can be passed alone or they can provide values. You can pass `--fallback-to-build=false` to override the option as declared in package.json. In addition to being able to pass `--build-from-source` you can also pass `--build-from-source=myapp` where `myapp` is the name of your module.\n\nFor example: `npm install --build-from-source=myapp`. This is useful if:\n\n- `myapp` is referenced in the package.json of a larger app and therefore `myapp` is being installed as a dependency with `npm install`.\n- The larger app also depends on other modules installed with `node-pre-gyp`\n- You only want to trigger a source compile for `myapp` and the other modules.\n\n# Configuring\n\nThis is a guide to configuring your module to use node-pre-gyp.\n\n## 1) Add new entries to your `package.json`\n\n- Add `node-pre-gyp` to `dependencies`\n- Add a custom `install` script\n- Declare a `binary` object\n\nThis looks like:\n\n```json\n\"dependencies\"  : {\n  \"@discordjs/node-pre-gyp\": \"0.1.x\"\n},\n\"scripts\": {\n  \"install\": \"node-pre-gyp install --fallback-to-build\"\n},\n\"binary\": {\n  \"module_name\": \"your_module\",\n  \"module_path\": \"./lib/binding/\",\n  \"host\": \"https://your_module.s3-us-west-1.amazonaws.com\"\n}\n```\n\nFor a full example see [node-addon-examples's package.json](https://github.com/springmeyer/node-addon-example/blob/master/package.json).\n\nLet's break this down:\n\n- Dependencies need to list `node-pre-gyp`\n- Your `scripts` section should override the `install` target with `\"install\": \"node-pre-gyp install --fallback-to-build\"`. This allows node-pre-gyp to be used instead of the default npm behavior of always source compiling with `node-gyp` directly.\n- Your package.json should contain a `binary` section describing key properties you provide to allow node-pre-gyp to package optimally. They are detailed below.\n\n### The `binary` object has three required properties\n\n### module_name\n\nThe name of your native node module. This value must:\n\n- Match the name passed to [the NODE_MODULE macro](http://nodejs.org/api/addons.html#addons_hello_world)\n- Must be a valid C variable name (e.g. it cannot contain `-`)\n- Should not include the `.node` extension.\n\n### module_path\n\nThe location your native module is placed after a build. This should be an empty directory without other Javascript files. This entire directory will be packaged in the binary tarball. When installing from a remote package this directory will be overwritten with the contents of the tarball.\n\nNote: This property supports variables based on [Versioning](#versioning).\n\n### host\n\nA url to the remote location where you've published tarball binaries (must be `https` not `http`).\n\n### remote_path\n\nIt **is recommended** that you customize this property. This is an extra path to use for publishing and finding remote tarballs. The default value for `remote_path` is `\"\"` meaning that if you do not provide it then all packages will be published at the base of the `host`. It is recommended to provide a value like `./{name}/v{version}` to help organize remote packages in the case that you choose to publish multiple node addons to the same `host`.\n\nNote: This property supports variables based on [Versioning](#versioning).\n\n### package_name\n\nIt is **not recommended** to override this property unless you are also overriding the `remote_path`. This is the versioned name of the remote tarball containing the binary `.node` module and any supporting files you've placed inside the `module_path` directory. Unless you specify `package_name` in your `package.json` then it defaults to `{module_name}-v{version}-{node_abi}-{platform}-{arch}.tar.gz` which allows your binary to work across node versions, platforms, and architectures. If you are using `remote_path` that is also versioned by `./{module_name}/v{version}` then you could remove these variables from the `package_name` and just use: `{node_abi}-{platform}-{arch}.tar.gz`. Then your remote tarball will be looked up at, for example, `https://example.com/your-module/v0.1.0/node-v11-linux-x64.tar.gz`.\n\nAvoiding the version of your module in the `package_name` and instead only embedding in a directory name can be useful when you want to make a quick tag of your module that does not change any C++ code.\n\nNote: This property supports variables based on [Versioning](#versioning).\n\n## 2) Add a new target to binding.gyp\n\n`node-pre-gyp` calls out to `node-gyp` to compile the module and passes variables along like [module_name](#module_name) and [module_path](#module_path).\n\nA new target must be added to `binding.gyp` that moves the compiled `.node` module from `./build/Release/module_name.node` into the directory specified by `module_path`.\n\nAdd a target like this at the end of your `targets` list:\n\n```json\n{\n\t\"target_name\": \"action_after_build\",\n\t\"type\": \"none\",\n\t\"dependencies\": [\"<(module_name)\"],\n\t\"copies\": [\n\t\t{\n\t\t\t\"files\": [\"<(PRODUCT_DIR)/<(module_name).node\"],\n\t\t\t\"destination\": \"<(module_path)\"\n\t\t}\n\t]\n}\n```\n\nFor a full example see [node-addon-example's binding.gyp](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/binding.gyp).\n\n## 3) Dynamically require your `.node`\n\nInside the main js file that requires your addon module you are likely currently doing:\n\n```js\nconst binding = require('../build/Release/binding.node');\n```\n\nor:\n\n```js\nconst bindings = require('./bindings');\n```\n\nChange those lines to:\n\n```js\nconst binary = require('@discordjs/node-pre-gyp');\nconst path = require('path');\nconst binding_path = binary.find(path.resolve(path.join(__dirname, './package.json')));\nconst binding = require(binding_path);\n```\n\nFor a full example see [node-addon-example's index.js](https://github.com/springmeyer/node-addon-example/blob/2ff60a8ded7f042864ad21db00c3a5a06cf47075/index.js#L1-L4)\n\n## 4) Build and package your app\n\nNow build your module from source:\n\n```bash\nnpm install --build-from-source\n```\n\nThe `--build-from-source` tells `node-pre-gyp` to not look for a remote package and instead dispatch to node-gyp to build.\n\nNow `node-pre-gyp` should now also be installed as a local dependency so the command line tool it offers can be found at `./node_modules/.bin/node-pre-gyp`.\n\n## 5) Test\n\nNow `npm test` should work just as it did before.\n\n## 6) Publish the tarball\n\nThen package your app:\n\n    ./node_modules/.bin/node-pre-gyp package\n\nOnce packaged you can also host your binaries. To do this requires:\n\n- You manually publish the binary created by the `package` command to an `https` endpoint\n- Ensure that the `host` value points to your custom `https` endpoint.\n\n## 7) You're done!\n\nNow publish your module to the npm registry. Users will now be able to install your module from a binary.\n\nWhat will happen is this:\n\n1. `npm install <your package>` will pull from the npm registry\n2. npm will run the `install` script which will call out to `node-pre-gyp`\n3. `node-pre-gyp` will fetch the binary `.node` module and unpack in the right place\n4. Assuming that all worked, you are done\n\nIf a a binary was not available for a given platform and `--fallback-to-build` was used then `node-gyp rebuild` will be called to try to source compile the module.\n\n## N-API Considerations\n\n[Node-API](https://nodejs.org/api/n-api.html#n_api_node_api), which was previously known as N-API, is an ABI-stable alternative to previous technologies such as [nan](https://github.com/nodejs/nan) which are tied to a specific Node runtime engine. Node-API is Node runtime engine agnostic and guarantees modules created today will continue to run, without changes, into the future.\n\nUsing `node-pre-gyp` with Node-API projects requires a handful of additional configuration values and imposes some additional requirements.\n\nThe most significant difference is that an Node-API module can be coded to target multiple Node-API versions. Therefore, an Node-API module must declare in its `package.json` file which Node-API versions the module is designed to run against. In addition, since multiple builds may be required for a single module, path and file names must be specified in way that avoids naming conflicts.\n\n## The `napi_versions` array property\n\nA Node-API module must declare in its `package.json` file, the Node-API versions the module is intended to support. This is accomplished by including an `napi-versions` array property in the `binary` object. For example:\n\n```json\n\"binary\": {\n  \"module_name\": \"your_module\",\n  \"module_path\": \"your_module_path\",\n  \"host\": \"https://your_bucket.s3-us-west-1.amazonaws.com\",\n  \"napi_versions\": [1,3]\n}\n```\n\nIf the `napi_versions` array property is _not_ present, `node-pre-gyp` operates as it always has. Including the `napi_versions` array property instructs `node-pre-gyp` that this is a Node-API module build.\n\nWhen the `napi_versions` array property is present, `node-pre-gyp` fires off multiple operations, one for each of the Node-API versions in the array. In the example above, two operations are initiated, one for Node-API version 1 and second for Node-API version 3. How this version number is communicated is described next.\n\n## The `napi_build_version` value\n\nFor each of the Node-API module operations `node-pre-gyp` initiates, it ensures that the `napi_build_version` is set appropriately.\n\nThis value is of importance in two areas:\n\n1. The C/C++ code which needs to know against which Node-API version it should compile.\n2. `node-pre-gyp` itself which must assign appropriate path and file names to avoid collisions.\n\n## Defining `NAPI_VERSION` for the C/C++ code\n\nThe `napi_build_version` value is communicated to the C/C++ code by adding this code to the `binding.gyp` file:\n\n```json\n\"defines\": [\n    \"NAPI_VERSION=<(napi_build_version)\",\n]\n```\n\nThis ensures that `NAPI_VERSION`, an integer value, is declared appropriately to the C/C++ code for each build.\n\n> Note that earlier versions of this document recommended defining the symbol `NAPI_BUILD_VERSION`. `NAPI_VERSION` is preferred because it used by the Node-API C/C++ headers to configure the specific Node-API versions being requested.\n\n## Path and file naming requirements in `package.json`\n\nSince `node-pre-gyp` fires off multiple operations for each request, it is essential that path and file names be created in such a way as to avoid collisions. This is accomplished by imposing additional path and file naming requirements.\n\nSpecifically, when performing Node-API builds, the `{napi_build_version}` text configuration value _must_ be present in the `module_path` property. In addition, the `{napi_build_version}` text configuration value _must_ be present in either the `remote_path` or `package_name` property. (No problem if it's in both.)\n\nHere's an example:\n\n```json\n\"binary\": {\n  \"module_name\": \"your_module\",\n  \"module_path\": \"./lib/binding/napi-v{napi_build_version}\",\n  \"remote_path\": \"./{module_name}/v{version}/{configuration}/\",\n  \"package_name\": \"{platform}-{arch}-napi-v{napi_build_version}.tar.gz\",\n  \"host\": \"https://your_bucket.s3-us-west-1.amazonaws.com\",\n  \"napi_versions\": [1,3]\n}\n```\n\n## Supporting both N-API and NAN builds\n\nYou may have a legacy native add-on that you wish to continue supporting for those versions of Node that do not support Node-API, as you add Node-API support for later Node versions. This can be accomplished by specifying the `node_napi_label` configuration value in the package.json `binary.package_name` property.\n\nPlacing the configuration value `node_napi_label` in the package.json `binary.package_name` property instructs `node-pre-gyp` to build all viable Node-API binaries supported by the current Node instance. If the current Node instance does not support Node-API, `node-pre-gyp` will request a traditional, non-Node-API build.\n\nThe configuration value `node_napi_label` is set by `node-pre-gyp` to the type of build created, `napi` or `node`, and the version number. For Node-API builds, the string contains the Node-API version nad has values like `napi-v3`. For traditional, non-Node-API builds, the string contains the ABI version with values like `node-v46`.\n\nHere's how the `binary` configuration above might be changed to support both Node-API and NAN builds:\n\n```json\n\"binary\": {\n  \"module_name\": \"your_module\",\n  \"module_path\": \"./lib/binding/{node_napi_label}\",\n  \"remote_path\": \"./{module_name}/v{version}/{configuration}/\",\n  \"package_name\": \"{platform}-{arch}-{node_napi_label}.tar.gz\",\n  \"host\": \"https://your_bucket.s3-us-west-1.amazonaws.com\",\n  \"napi_versions\": [1,3]\n}\n```\n\nThe C/C++ symbol `NAPI_VERSION` can be used to distinguish Node-API and non-Node-API builds. The value of `NAPI_VERSION` is set to the integer Node-API version for Node-API builds and is set to `0` for non-Node-API builds.\n\nFor example:\n\n```C\n#if NAPI_VERSION\n// Node-API code goes here\n#else\n// NAN code goes here\n#endif\n```\n\n## Two additional configuration values\n\nThe following two configuration values, which were implemented in previous versions of `node-pre-gyp`, continue to exist, but have been replaced by the `node_napi_label` configuration value described above.\n\n1. `napi_version` If Node-API is supported by the currently executing Node instance, this value is the Node-API version number supported by Node. If Node-API is not supported, this value is an empty string.\n\n2. `node_abi_napi` If the value returned for `napi_version` is non empty, this value is `'napi'`. If the value returned for `napi_version` is empty, this value is the value returned for `node_abi`.\n\nThese values are present for use in the `binding.gyp` file and may be used as `{napi_version}` and `{node_abi_napi}` for text substituion in the `binary` properties of the `package.json` file.\n\n# Versioning\n\nThe `binary` properties of `module_path`, `remote_path`, and `package_name` support variable substitution. The strings are evaluated by `node-pre-gyp` depending on your system and any custom build flags you passed.\n\n- `node_abi`: The node C++ `ABI` number. This value is available in Javascript as `process.versions.modules` as of [`>= v0.10.4 >= v0.11.7`](https://github.com/joyent/node/commit/ccabd4a6fa8a6eb79d29bc3bbe9fe2b6531c2d8e) and in C++ as the `NODE_MODULE_VERSION` define much earlier. For versions of Node before this was available we fallback to the V8 major and minor version.\n- `platform` matches node's `process.platform` like `linux`, `darwin`, and `win32` unless the user passed the `--target_platform` option to override.\n- `arch` matches node's `process.arch` like `x64` or `ia32` unless the user passes the `--target_arch` option to override.\n- `libc` matches `require('detect-libc').family` like `glibc` or `musl` unless the user passes the `--target_libc` option to override.\n- `libc_version` matches `require('detect-libc').version`\n- `configuration` - Either 'Release' or 'Debug' depending on if `--debug` is passed during the build.\n- `module_name` - the `binary.module_name` attribute from `package.json`.\n- `version` - the semver `version` value for your module from `package.json` (NOTE: ignores the `semver.build` property).\n- `major`, `minor`, `patch`, and `prelease` match the individual semver values for your module's `version`\n- `build` - the sevmer `build` value. For example it would be `this.that` if your package.json `version` was `v1.0.0+this.that`\n- `prerelease` - the semver `prerelease` value. For example it would be `alpha.beta` if your package.json `version` was `v1.0.0-alpha.beta`\n\nThe options are visible in the code at <https://github.com/mapbox/node-pre-gyp/blob/612b7bca2604508d881e1187614870ba19a7f0c5/lib/util/versioning.js#L114-L127>\n\n# Download binary files from a mirror\n\nS3 is broken in China for the well known reason.\n\nUsing the `npm` config argument: `--{module_name}_binary_host_mirror` can download binary files through a mirror, `-` in `module_name` will be replaced with `_`.\n\ne.g.: Install [v8-profiler](https://www.npmjs.com/package/v8-profiler) from `npm`.\n\n```bash\n$ npm install v8-profiler --profiler_binary_host_mirror=https://npm.taobao.org/mirrors/node-inspector/\n```\n\ne.g.: Install [canvas-prebuilt](https://www.npmjs.com/package/canvas-prebuilt) from `npm`.\n\n```bash\n$ npm install canvas-prebuilt --canvas_prebuilt_binary_host_mirror=https://npm.taobao.org/mirrors/canvas-prebuilt/\n```","users":{}}