Compare commits
18 Commits
forward-stdin
...
v0.9.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbd3dbb31d | ||
|
|
a2cfb8a8f3 | ||
|
|
8b38cd56a1 | ||
|
|
6d672bd70f | ||
|
|
c16ca4bad7 | ||
|
|
158101ca4d | ||
|
|
ac5ec3b3d2 | ||
|
|
6bab396b51 | ||
|
|
0165c9bc33 | ||
|
|
c39c55721f | ||
|
|
38c590851f | ||
|
|
ab9cabd08f | ||
|
|
0f81f6ec9a | ||
|
|
0ca3d5caef | ||
|
|
1dfb44afbe | ||
|
|
ee5cc6e589 | ||
|
|
6ad1a5079e | ||
|
|
d66fb5cf16 |
38
.github/workflows/ci.yml
vendored
38
.github/workflows/ci.yml
vendored
@@ -13,15 +13,19 @@ jobs:
|
||||
name: ${{ matrix.friendlyName }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
# Needed until macos-11.0 hosted runners are available
|
||||
SDKROOT: '/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node: [12.14.1]
|
||||
os: [macos-10.14, windows-2019, ubuntu-18.04]
|
||||
node: [14.15.4]
|
||||
os: [macos-10.14, windows-latest, ubuntu-18.04]
|
||||
include:
|
||||
- os: macos-10.14
|
||||
friendlyName: macOS
|
||||
- os: windows-2019
|
||||
- os: windows-latest
|
||||
friendlyName: Windows
|
||||
- os: ubuntu-18.04
|
||||
friendlyName: Linux
|
||||
@@ -33,19 +37,33 @@ jobs:
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
|
||||
# This step can be removed as soon as official Windows arm64 builds are published:
|
||||
# https://github.com/nodejs/build/issues/2450#issuecomment-705853342
|
||||
- run: |
|
||||
$NodeVersion = (node --version) -replace '^.'
|
||||
$NodeFallbackVersion = "15.8.0"
|
||||
& .\script\download-node-lib-win-arm64.ps1 $NodeVersion $NodeFallbackVersion
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
name: Install Windows arm64 node.lib
|
||||
|
||||
- name: Install and build
|
||||
run: yarn
|
||||
run: |
|
||||
yarn install
|
||||
yarn build
|
||||
- name: Lint
|
||||
run: yarn lint
|
||||
- name: Test
|
||||
run: yarn test
|
||||
shell: bash
|
||||
- name: Prebuild Node x64
|
||||
run: yarn prebuild-node
|
||||
- name: Prebuild Electron x64
|
||||
run: yarn prebuild-electron
|
||||
- name: Prebuild Electron arm64
|
||||
run: yarn prebuild-electron-arm64
|
||||
- name: Prebuild (x64)
|
||||
run: npm run prebuild-napi-x64
|
||||
- name: Prebuild (arm64)
|
||||
run: npm run prebuild-napi-arm64
|
||||
if: ${{ matrix.os != 'ubuntu-18.04' }}
|
||||
- name: Prebuild (Windows x86)
|
||||
run: npm run prebuild-napi-ia32
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
- name: Publish
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
run: yarn upload
|
||||
|
||||
14
README.md
14
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
A cross-platform no-dependency C executable trampoline which lets GitHub Desktop
|
||||
intercede in order to provide Git with any additional info it needs (like
|
||||
credentials through `GIT_ASKPASS`).
|
||||
credentials through `GIT_ASKPASS` or `SSH_ASKPASS`).
|
||||
|
||||
The intention is to support the same platforms that
|
||||
[Electron supports](https://www.electronjs.org/docs/tutorial/support#supported-platforms).
|
||||
@@ -125,3 +125,15 @@ Thanks to this, with only one generic trampoline that forwards everything via
|
||||
that TCP socket, the implementation for every possible protocol like
|
||||
`GIT_ASKPASS` can live within the GitHub Desktop codebase instead of having
|
||||
multiple trampoline executables.
|
||||
|
||||
## SSH Wrapper
|
||||
|
||||
Along with the trampoline, an SSH wrapper is provided for macOS. The reason for
|
||||
this is macOS before Monterey include an "old" version of OpenSSH that will
|
||||
ignore the `SSH_ASKPASS` variable unless it's unable to write to a tty.
|
||||
|
||||
This SSH wrapper achieves exactly that: just runs whatever `ssh` exists in the
|
||||
path in a way that will use `SSH_ASKPASS` when necessary.
|
||||
|
||||
More recent versions of OpenSSH (starting with 8.3) don't require this wrapper,
|
||||
since they added support for a new `SSH_ASKPASS_REQUIRE` environment variable.
|
||||
|
||||
59
binding.gyp
59
binding.gyp
@@ -2,12 +2,16 @@
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'desktop-trampoline',
|
||||
'defines': [
|
||||
"NAPI_VERSION=<(napi_build_version)",
|
||||
],
|
||||
'type': 'executable',
|
||||
'sources': [
|
||||
'src/desktop-trampoline.c',
|
||||
'src/socket.c'
|
||||
],
|
||||
'include_dirs': [
|
||||
'<!(node -p "require(\'node-addon-api\').include_dir")',
|
||||
'include'
|
||||
],
|
||||
'xcode_settings': {
|
||||
@@ -27,12 +31,17 @@
|
||||
'-pie',
|
||||
'-D_FORTIFY_SOURCE=1',
|
||||
'-fstack-protector-strong',
|
||||
'-Werror=format-security'
|
||||
'-Werror=format-security',
|
||||
'-fno-exceptions'
|
||||
],
|
||||
'cflags_cc!': [ '-fno-exceptions' ],
|
||||
'ldflags!': [
|
||||
'-z relro',
|
||||
'-z now'
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': { 'ExceptionHandling': 1 },
|
||||
},
|
||||
'conditions': [
|
||||
['OS=="win"', {
|
||||
'defines': [ 'WINDOWS' ],
|
||||
@@ -42,5 +51,53 @@
|
||||
}]
|
||||
]
|
||||
},
|
||||
{
|
||||
'target_name': 'ssh-wrapper',
|
||||
'defines': [
|
||||
"NAPI_VERSION=<(napi_build_version)",
|
||||
],
|
||||
'type': 'executable',
|
||||
'sources': [
|
||||
'src/ssh-wrapper.c'
|
||||
],
|
||||
'include_dirs': [
|
||||
'<!(node -p "require(\'node-addon-api\').include_dir")',
|
||||
'include'
|
||||
],
|
||||
'xcode_settings': {
|
||||
'OTHER_CFLAGS': [
|
||||
'-Wall',
|
||||
'-Werror',
|
||||
'-Werror=format-security',
|
||||
'-fPIC',
|
||||
'-D_FORTIFY_SOURCE=1',
|
||||
'-fstack-protector-strong'
|
||||
]
|
||||
},
|
||||
'cflags!': [
|
||||
'-Wall',
|
||||
'-Werror',
|
||||
'-fPIC',
|
||||
'-pie',
|
||||
'-D_FORTIFY_SOURCE=1',
|
||||
'-fstack-protector-strong',
|
||||
'-Werror=format-security',
|
||||
'-fno-exceptions'
|
||||
],
|
||||
'cflags_cc!': [ '-fno-exceptions' ],
|
||||
'ldflags!': [
|
||||
'-z relro',
|
||||
'-z now'
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': { 'ExceptionHandling': 1 },
|
||||
},
|
||||
'conditions': [
|
||||
# For now only build it for macOS, since it's not needed on Windows
|
||||
['OS=="win"', {
|
||||
'defines': [ 'WINDOWS' ],
|
||||
}]
|
||||
]
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
3
index.d.ts
vendored
3
index.d.ts
vendored
@@ -1,2 +1,5 @@
|
||||
export function getDesktopTrampolinePath(): string
|
||||
export function getDesktopTrampolineFilename(): string
|
||||
|
||||
export function getSSHWrapperPath(): string
|
||||
export function getSSHWrapperFilename(): string
|
||||
|
||||
10
index.js
10
index.js
@@ -15,7 +15,17 @@ function getDesktopTrampolineFilename() {
|
||||
: 'desktop-trampoline'
|
||||
}
|
||||
|
||||
function getSSHWrapperPath() {
|
||||
return Path.join(__dirname, 'build', 'Release', getSSHWrapperFilename())
|
||||
}
|
||||
|
||||
function getSSHWrapperFilename() {
|
||||
return process.platform === 'win32' ? 'ssh-wrapper.exe' : 'ssh-wrapper'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getDesktopTrampolinePath,
|
||||
getDesktopTrampolineFilename,
|
||||
getSSHWrapperPath,
|
||||
getSSHWrapperFilename,
|
||||
}
|
||||
|
||||
25
package.json
25
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "desktop-trampoline",
|
||||
"version": "0.9.4",
|
||||
"version": "0.9.8",
|
||||
"main": "index.js",
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
@@ -15,10 +15,10 @@
|
||||
"test": "jest",
|
||||
"lint": "prettier -c **/*.js **/*.md",
|
||||
"lint:fix": "prettier --write **/*.js **/*.md",
|
||||
"prebuild-node": "prebuild -t 10.11.0 -t 11.9.0 -t 12.0.0 -t 14.8.0 --strip --include-regex \"desktop-trampoline(\\.exe)?$\"",
|
||||
"prebuild-electron": "prebuild -t 7.0.0 -t 8.0.0 -t 9.0.0 -t 10.0.0 -t 11.0.0 -r electron --strip --include-regex \"desktop-trampoline(\\.exe)?$\"",
|
||||
"prebuild-electron-arm64": "prebuild -t 7.0.0 -t 8.0.0 -t 9.0.0 -t 10.0.0 -t 11.0.0 -r electron -a arm64 --strip --include-regex \"desktop-trampoline(\\.exe)?$\"",
|
||||
"prebuild-all": "yarn prebuild-node && yarn prebuild-electron && yarn prebuild-electron-arm64",
|
||||
"prebuild-napi-x64": "prebuild -t 3 -r napi -a x64 --strip --include-regex \"(desktop-trampoline|ssh-wrapper)(\\.exe)?$\"",
|
||||
"prebuild-napi-ia32": "prebuild -t 3 -r napi -a ia32 --strip --include-regex \"(desktop-trampoline|ssh-wrapper)(\\.exe)?$\"",
|
||||
"prebuild-napi-arm64": "prebuild -t 3 -r napi -a arm64 --strip --include-regex \"(desktop-trampoline|ssh-wrapper)(\\.exe)?$\"",
|
||||
"prebuild-all": "yarn prebuild-napi-x64 && yarn prebuild-napi-ia32 && yarn prebuild-napi-arm64",
|
||||
"upload": "node ./script/upload.js"
|
||||
},
|
||||
"repository": {
|
||||
@@ -29,11 +29,24 @@
|
||||
"url": "https://github.com/desktop/desktop-trampoline/issues"
|
||||
},
|
||||
"homepage": "https://github.com/desktop/desktop-trampoline#readme",
|
||||
"dependencies": {
|
||||
"node-addon-api": "^3.1.0",
|
||||
"prebuild-install": "^6.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jest": "^26.4.2",
|
||||
"node-gyp": "^7.1.0",
|
||||
"prebuild": "^10.0.1",
|
||||
"prebuild": "https://github.com/sergiou87/prebuild#strip-multiple-files",
|
||||
"prettier": "^2.1.2",
|
||||
"split2": "^3.2.2"
|
||||
},
|
||||
"binary": {
|
||||
"napi_versions": [
|
||||
3
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"runtime": "napi",
|
||||
"target": 3
|
||||
}
|
||||
}
|
||||
|
||||
36
script/download-node-lib-win-arm64.ps1
Normal file
36
script/download-node-lib-win-arm64.ps1
Normal file
@@ -0,0 +1,36 @@
|
||||
# This script can be removed as soon as official Windows arm64 builds are published:
|
||||
# https://github.com/nodejs/build/issues/2450#issuecomment-705853342
|
||||
|
||||
$nodeVersion = $args[0]
|
||||
$fallbackVersion = $args[1]
|
||||
|
||||
If ($null -eq $nodeVersion -Or $null -eq $fallbackVersion) {
|
||||
Write-Error "No NodeJS version given as argument to this file. Run it like download-nodejs-win-arm64.ps1 NODE_VERSION NODE_FALLBACK_VERSION"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$url = "https://unofficial-builds.nodejs.org/download/release/v$nodeVersion/win-arm64/node.lib"
|
||||
$fallbackUrl = "https://unofficial-builds.nodejs.org/download/release/v$fallbackVersion/win-arm64/node.lib"
|
||||
|
||||
# Always write to the $nodeVersion cache folder, even if we're using the fallbackVersion
|
||||
$cacheFolder = "$env:TEMP\prebuild\napi\$nodeVersion\arm64"
|
||||
|
||||
If (!(Test-Path $cacheFolder)) {
|
||||
New-Item -ItemType Directory -Force -Path $cacheFolder
|
||||
}
|
||||
|
||||
$output = "$cacheFolder\node.lib"
|
||||
$start_time = Get-Date
|
||||
|
||||
Try {
|
||||
Invoke-WebRequest -Uri $url -OutFile $output
|
||||
$downloadedNodeVersion = $nodeVersion
|
||||
} Catch {
|
||||
If ($_.Exception.Response -And $_.Exception.Response.StatusCode -eq "NotFound") {
|
||||
Write-Output "No arm64 node.lib found for Node Windows $nodeVersion, trying fallback version $fallbackVersion..."
|
||||
Invoke-WebRequest -Uri $fallbackUrl -OutFile $output
|
||||
$downloadedNodeVersion = $fallbackVersion
|
||||
}
|
||||
}
|
||||
|
||||
Write-Output "Downloaded arm64 NodeJS lib v$downloadedNodeVersion to $output in $((Get-Date).Subtract($start_time).Seconds) second(s)"
|
||||
37
src/ssh-wrapper.c
Normal file
37
src/ssh-wrapper.c
Normal file
@@ -0,0 +1,37 @@
|
||||
#ifdef WINDOWS
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
// Not needed on Windows, this will just create a dummy executable
|
||||
return -1;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/**
|
||||
* This is a wrapper for the ssh command. It is used to make sure ssh runs without
|
||||
* a tty on macOS, allowing GitHub Desktop to intercept different prompts from
|
||||
* ssh (e.g. passphrase, adding a host to the list of known hosts...).
|
||||
* This is not necessary on more recent versions of OpenSSH (starting with v8.3)
|
||||
* which include support for the SSH_ASKPASS_REQUIRE environment variable.
|
||||
*/
|
||||
int main(int argc, char **argv) {
|
||||
pid_t child = fork();
|
||||
|
||||
if (child < 0) {
|
||||
fprintf(stderr, "Failed to fork\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (child != 0) {
|
||||
// This is the parent process. Just exit.
|
||||
return 0;
|
||||
}
|
||||
|
||||
setsid();
|
||||
return execvp("ssh", argv);
|
||||
}
|
||||
|
||||
#endif
|
||||
42
test/ssh-wrapper.test.js
Normal file
42
test/ssh-wrapper.test.js
Normal file
@@ -0,0 +1,42 @@
|
||||
const { stat, access } = require('fs').promises
|
||||
const { constants } = require('fs')
|
||||
const { execFile } = require('child_process')
|
||||
const { promisify } = require('util')
|
||||
const { getSSHWrapperPath } = require('../index')
|
||||
|
||||
const sshWrapperPath = getSSHWrapperPath()
|
||||
const run = promisify(execFile)
|
||||
|
||||
describe('ssh-wrapper', () => {
|
||||
it('exists and is a regular file', async () =>
|
||||
expect((await stat(sshWrapperPath)).isFile()).toBe(true))
|
||||
|
||||
// On Windows, the binary generated is just useless, so no point to test it.
|
||||
// Also, this won't be used on Linux (for now at least), so don't bother to
|
||||
// run the tests there.
|
||||
if (process.platform !== 'darwin') {
|
||||
return
|
||||
}
|
||||
|
||||
it('can be executed by current process', () =>
|
||||
access(sshWrapperPath, constants.X_OK))
|
||||
|
||||
it('attempts to use ssh-askpass program', async () => {
|
||||
// Try to connect to github.com with a non-existent known_hosts file to force
|
||||
// ssh to prompt the user and use askpass.
|
||||
const result = await run(
|
||||
sshWrapperPath,
|
||||
['-o', 'UserKnownHostsFile=/path/to/fake/known_hosts', 'git@github.com'],
|
||||
{
|
||||
env: {
|
||||
SSH_ASKPASS: '/path/to/fake/ssh-askpass',
|
||||
DISPLAY: '.',
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
expect(result.stderr).toMatch(
|
||||
/ssh_askpass: exec\(\/path\/to\/fake\/ssh-askpass\): No such file or directory/
|
||||
)
|
||||
})
|
||||
})
|
||||
89
yarn.lock
89
yarn.lock
@@ -1296,6 +1296,13 @@ decode-uri-component@^0.2.0:
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||
|
||||
decompress-response@^4.2.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
|
||||
integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==
|
||||
dependencies:
|
||||
mimic-response "^2.0.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
@@ -1539,6 +1546,11 @@ expand-brackets@^2.1.4:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
expect@^26.4.2:
|
||||
version "26.4.2"
|
||||
resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.2.tgz#36db120928a5a2d7d9736643032de32f24e1b2a1"
|
||||
@@ -2893,13 +2905,18 @@ mimic-fn@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
mimic-response@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
|
||||
integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
|
||||
|
||||
"minimatch@2 || 3", minimatch@3, minimatch@^3.0.2, minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@^1.1.1, minimist@^1.1.2, minimist@^1.2.0, minimist@^1.2.5:
|
||||
minimist@^1.1.1, minimist@^1.1.2, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||
@@ -2942,6 +2959,11 @@ mixin-deep@^1.2.0:
|
||||
for-in "^1.0.2"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||
@@ -3008,6 +3030,18 @@ node-abi@^2.2.0:
|
||||
dependencies:
|
||||
semver "^5.4.1"
|
||||
|
||||
node-abi@^2.21.0:
|
||||
version "2.26.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.26.0.tgz#355d5d4bc603e856f74197adbf3f5117a396ba40"
|
||||
integrity sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==
|
||||
dependencies:
|
||||
semver "^5.4.1"
|
||||
|
||||
node-addon-api@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239"
|
||||
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
|
||||
|
||||
node-gyp@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-6.1.0.tgz#64e31c61a4695ad304c1d5b82cf6b7c79cc79f3f"
|
||||
@@ -3083,7 +3117,7 @@ node-notifier@^8.0.0:
|
||||
uuid "^8.3.0"
|
||||
which "^2.0.2"
|
||||
|
||||
noop-logger@^0.1.0:
|
||||
noop-logger@^0.1.0, noop-logger@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
|
||||
integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
|
||||
@@ -3398,10 +3432,29 @@ posix-character-classes@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
||||
|
||||
prebuild@^10.0.1:
|
||||
prebuild-install@^6.0.0:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.1.tgz#6754fa6c0d55eced7f9e14408ff9e4cba6f097b4"
|
||||
integrity sha512-M+cKwofFlHa5VpTWub7GLg5RLcunYIcLqtY5pKcls/u7xaAb8FrXZ520qY8rkpYy5xw90tYCyMO0MP5ggzR3Sw==
|
||||
dependencies:
|
||||
detect-libc "^1.0.3"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.3"
|
||||
mkdirp-classic "^0.5.3"
|
||||
napi-build-utils "^1.0.1"
|
||||
node-abi "^2.21.0"
|
||||
noop-logger "^0.1.1"
|
||||
npmlog "^4.0.1"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^3.0.3"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
"prebuild@https://github.com/sergiou87/prebuild#strip-multiple-files":
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/prebuild/-/prebuild-10.0.1.tgz#9d46a00f42b60ad1718479cc5e3d1ef4882b7f33"
|
||||
integrity sha512-x0CkKDmHFwX49rTGEYJwB9jBQwJWxRzwUtP5PA9dP8khFGMm3oSFgYortxdlp0PkxB29EhWGp/KQE5g+adehYg==
|
||||
resolved "https://github.com/sergiou87/prebuild#d3761817d9a0db1ecf4dfbf12d02b36b0a03cadc"
|
||||
dependencies:
|
||||
cmake-js "~5.2.0"
|
||||
detect-libc "^1.0.3"
|
||||
@@ -3840,6 +3893,20 @@ signal-exit@^3.0.2:
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||
|
||||
simple-concat@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^3.0.3:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3"
|
||||
integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==
|
||||
dependencies:
|
||||
decompress-response "^4.2.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
simple-mime@~0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-mime/-/simple-mime-0.1.0.tgz#95f517c4f466d7cff561a71fc9dab2596ea9ef2e"
|
||||
@@ -4138,7 +4205,17 @@ symbol-tree@^3.2.4:
|
||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
|
||||
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
|
||||
|
||||
tar-stream@^2.1.0:
|
||||
tar-fs@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.0, tar-stream@^2.1.4:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
|
||||
Reference in New Issue
Block a user