From 756a4b4cfeca24eacb17b55e4a4068082215d10f Mon Sep 17 00:00:00 2001 From: anmist Date: Fri, 10 Mar 2023 18:22:57 +0400 Subject: [PATCH 1/9] Add in socket.on('data') handler ability to concat buffer data --- lib/ssh_agent_client.js | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/ssh_agent_client.js b/lib/ssh_agent_client.js index fcb52e5..a93f39e 100644 --- a/lib/ssh_agent_client.js +++ b/lib/ssh_agent_client.js @@ -258,26 +258,36 @@ SSHAgentClient.prototype._request = function (getRequest, var socket = net.createConnection(this.sockFile); var gotdata = false; var timedout = false; + var len = -1; + var totalData; socket.on('data', function (data) { - gotdata = true; - socket.end(); + if (len === -1) { + len = ctype.ruint32(data, 'big', 0); + totalData = data; + } else { + totalData = Buffer.concat([totalData, data]); + } - var len = ctype.ruint32(data, 'big', 0); - if (len !== data.length - 4) { + if (len < totalData.length - 4) { return callback(new InvalidProtocolError('Expected length: ' + len + ' but got: ' + - data.length)); + totalData.length)); } - - var type = ctype.ruint8(data, 'big', 4); - if (type !== messageType) { - return callback(new InvalidProtocolError('Expected message type: ' + - messageType + - ' but got: ' + type)); + + if (len === totalData.length - 4) { + gotdata = true; + socket.end(); + + var type = ctype.ruint8(totalData, 'big', 4); + if (type !== messageType) { + return callback(new InvalidProtocolError('Expected message type: ' + + messageType + + ' but got: ' + type)); + } + + return parseResponse(totalData.slice(5)); } - - return parseResponse(data.slice(5)); }); socket.on('close', function (haderror) { From b4ad1b4584abe27d9e4c0b57dba3cfbcd2537144 Mon Sep 17 00:00:00 2001 From: anmist Date: Mon, 13 Mar 2023 12:52:27 +0400 Subject: [PATCH 2/9] Add data.length for determination len --- lib/ssh_agent_client.js | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/lib/ssh_agent_client.js b/lib/ssh_agent_client.js index a93f39e..bd1154d 100644 --- a/lib/ssh_agent_client.js +++ b/lib/ssh_agent_client.js @@ -263,30 +263,32 @@ SSHAgentClient.prototype._request = function (getRequest, socket.on('data', function (data) { if (len === -1) { - len = ctype.ruint32(data, 'big', 0); + len = data.length >= 4 ? ctype.ruint32(data, 'big', 0) : -1; totalData = data; } else { totalData = Buffer.concat([totalData, data]); } - if (len < totalData.length - 4) { - return callback(new InvalidProtocolError('Expected length: ' + - len + ' but got: ' + - totalData.length)); - } + if (len > -1) { + if (len < totalData.length - 4) { + return callback(new InvalidProtocolError('Expected length: ' + + len + ' but got: ' + + totalData.length)); + } - if (len === totalData.length - 4) { - gotdata = true; - socket.end(); - - var type = ctype.ruint8(totalData, 'big', 4); - if (type !== messageType) { - return callback(new InvalidProtocolError('Expected message type: ' + - messageType + - ' but got: ' + type)); + if (len === totalData.length - 4) { + gotdata = true; + socket.end(); + + var type = ctype.ruint8(totalData, 'big', 4); + if (type !== messageType) { + return callback(new InvalidProtocolError('Expected message type: ' + + messageType + + ' but got: ' + type)); + } + + return parseResponse(totalData.slice(5)); } - - return parseResponse(totalData.slice(5)); } }); From a37c4ad12b26a7ba9307e126e790978dc9d29838 Mon Sep 17 00:00:00 2001 From: anmist Date: Mon, 13 Mar 2023 15:35:27 +0400 Subject: [PATCH 3/9] Change package.json --- package.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3f4be87..eff34d9 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,17 @@ { "author": "Mark Cavage ", + "name": "node-ssh-agent", "contributors": [ "Dave Eddy ", "Patrick Mooney ", - "Dave Pacheco " + "Dave Pacheco ", + "Anastasia Tumanova " ], - "name": "ssh-agent", - "description": "An API for interacting with the SSH Agent.", - "version": "0.2.4", + "description": "Copy of git://github.com/mcavage/node-ssh-agent.git", + "version": "0.0.1", "repository": { "type": "git", - "url": "git://github.com/mcavage/node-ssh-agent.git" + "url": "git://github.com/anmisttt/node-ssh-agent.git" }, "bin": { "ssha-list": "./bin/ssha-list", From c3bfab357123dbd403ece3ae836f0c4c79790ea4 Mon Sep 17 00:00:00 2001 From: anmist Date: Tue, 14 Mar 2023 12:01:48 +0400 Subject: [PATCH 4/9] Move to yandex-int --- package-lock.json | 622 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- 2 files changed, 624 insertions(+), 2 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..827541f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,622 @@ +{ + "name": "@yandex-int/node-ssh-agent", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@yandex-int/node-ssh-agent", + "version": "0.0.1", + "dependencies": { + "ctype": "0.5.4", + "posix-getopt": "1.1.0" + }, + "bin": { + "ssha-list": "bin/ssha-list", + "ssha-sign": "bin/ssha-sign" + }, + "devDependencies": { + "faucet": "0.0.1", + "tape": "4.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://npm.yandex-team.ru/balanced-match/-/balanced-match-1.0.2.tgz?rbtorrent=b5770b454c205809e4f85bb2e3b838b3c634d90b", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://npm.yandex-team.ru/brace-expansion/-/brace-expansion-1.1.11.tgz?rbtorrent=a6f8ec4328e2858a0be33ed363e562a14b677c34", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/concat-map/-/concat-map-0.0.1.tgz?rbtorrent=d68e847684dabaf80403d1a017a6f3fe9f55e5f6", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://npm.yandex-team.ru/core-util-is/-/core-util-is-1.0.3.tgz?rbtorrent=d27ee558e50b9ed57445f731d176aea0c42859fd", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ctype": { + "version": "0.5.4", + "resolved": "https://npm.yandex-team.ru/ctype/-/ctype-0.5.4.tgz?rbtorrent=5e59ae0b6241afabd00864b8168c09ede4760476", + "integrity": "sha1-XP/7wmZELOihI5pfNwkaCFt6Pm4=", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://npm.yandex-team.ru/deep-equal/-/deep-equal-1.0.1.tgz?rbtorrent=bb6120a292ff0775d2cdda817095f85b2e32b453", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true, + "license": "MIT" + }, + "node_modules/defined": { + "version": "0.0.0", + "resolved": "https://npm.yandex-team.ru/defined/-/defined-0.0.0.tgz?rbtorrent=63783194072c9172647b19e37b9c6a0a0646a5e8", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://npm.yandex-team.ru/duplexer/-/duplexer-0.1.2.tgz?rbtorrent=d327b34fe886f5bc4ff2ede48deadbc826227169", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/faucet": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/faucet/-/faucet-0.0.1.tgz?rbtorrent=dc3ae335005e918567abaf3d7b3ead7581396b96", + "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=", + "dev": true, + "license": "MIT", + "dependencies": { + "defined": "0.0.0", + "duplexer": "~0.1.1", + "minimist": "0.0.5", + "sprintf": "~0.1.3", + "tap-parser": "~0.4.0", + "tape": "~2.3.2", + "through2": "~0.2.3" + }, + "bin": { + "faucet": "bin/cmd.js" + } + }, + "node_modules/faucet/node_modules/deep-equal": { + "version": "0.1.2", + "resolved": "https://npm.yandex-team.ru/deep-equal/-/deep-equal-0.1.2.tgz?rbtorrent=71190fa0c79e4fe27218f07bf2365a6812997318", + "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=", + "dev": true, + "license": "MIT" + }, + "node_modules/faucet/node_modules/tape": { + "version": "2.3.3", + "resolved": "https://npm.yandex-team.ru/tape/-/tape-2.3.3.tgz?rbtorrent=4ce8d02ca0838b14a1942236eeab8d50ce448b96", + "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-equal": "~0.1.0", + "defined": "~0.0.0", + "inherits": "~2.0.1", + "jsonify": "~0.0.0", + "resumer": "~0.0.0", + "through": "~2.3.4" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/glob": { + "version": "5.0.15", + "resolved": "https://npm.yandex-team.ru/glob/-/glob-5.0.15.tgz?rbtorrent=c07091ae949618bfd522317f0ddf6afe895e37c1", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "license": "ISC", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://npm.yandex-team.ru/inflight/-/inflight-1.0.6.tgz?rbtorrent=5fc387705f71d49a3d36c9e8cf63c62f5efe7396", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://npm.yandex-team.ru/inherits/-/inherits-2.0.4.tgz?rbtorrent=6d3c5e553faab1c5a0e5657d5f75d80d275fddbe", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/isarray/-/isarray-0.0.1.tgz?rbtorrent=03495802deeebf1bf29919bd221d5de87ef336c0", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/jsonify/-/jsonify-0.0.1.tgz?rbtorrent=b024ac05b888418446c8c14b5bec876f90c842ba", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://npm.yandex-team.ru/minimatch/-/minimatch-3.1.2.tgz?rbtorrent=ff75648d716a472d61b2fafcf5250b152d4b84b4", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.5", + "resolved": "https://npm.yandex-team.ru/minimist/-/minimist-0.0.5.tgz?rbtorrent=bc442913aa888e6a4695f7c6e5ad21d320d29f5d", + "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=", + "dev": true, + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.0.2", + "resolved": "https://npm.yandex-team.ru/object-inspect/-/object-inspect-1.0.2.tgz?rbtorrent=db8d4f862ea14204edde79d7a42b4104b63cc51a", + "integrity": "sha1-qXiFtVPldetACevAm92psc0hl5o=", + "dev": true, + "license": "MIT" + }, + "node_modules/object-keys": { + "version": "0.4.0", + "resolved": "https://npm.yandex-team.ru/object-keys/-/object-keys-0.4.0.tgz?rbtorrent=5abab1e6fc64e53d4aed4678b8638de46950903b", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://npm.yandex-team.ru/once/-/once-1.4.0.tgz?rbtorrent=631c10ccf90e53addc6a29d4cca37226f2b67537", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://npm.yandex-team.ru/path-is-absolute/-/path-is-absolute-1.0.1.tgz?rbtorrent=1a3152a41be6d5d7ee4d03430b58251761675a06", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-getopt": { + "version": "1.1.0", + "resolved": "https://npm.yandex-team.ru/posix-getopt/-/posix-getopt-1.1.0.tgz?rbtorrent=969b878dc6776778bae3c09d099fb5fe40e0a0c7", + "integrity": "sha1-jiWKyo801pBsFZoysDiDYBl+Vpg=", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://npm.yandex-team.ru/readable-stream/-/readable-stream-1.1.14.tgz?rbtorrent=4eed7f7a588d11a80af64b6071d2c98d2fbfcead", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://npm.yandex-team.ru/resumer/-/resumer-0.0.0.tgz?rbtorrent=1c1fdfedd8513d2993c09b6a4b0fd3232e102614", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/sprintf": { + "version": "0.1.5", + "resolved": "https://npm.yandex-team.ru/sprintf/-/sprintf-0.1.5.tgz?rbtorrent=e3b9af3ef3ba61ff2fdf5547fbea35448f1f4bee", + "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=", + "deprecated": "The sprintf package is deprecated in favor of sprintf-js.", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.2.4" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://npm.yandex-team.ru/string_decoder/-/string_decoder-0.10.31.tgz?rbtorrent=94cd1f803c59b2c581a3dd3462982cf0d0121fcb", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "license": "MIT" + }, + "node_modules/tap-parser": { + "version": "0.4.3", + "resolved": "https://npm.yandex-team.ru/tap-parser/-/tap-parser-0.4.3.tgz?rbtorrent=2f767f714fcb6d4cf1090caa61d8246487694a40", + "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.11" + } + }, + "node_modules/tape": { + "version": "4.0.0", + "resolved": "https://npm.yandex-team.ru/tape/-/tape-4.0.0.tgz?rbtorrent=2450411348a7ed109b8502c9fe0c559cf7379473", + "integrity": "sha1-56XeNWuqZWkasaus2AP3NwIE5VM=", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.0", + "defined": "~0.0.0", + "glob": "~5.0.3", + "inherits": "~2.0.1", + "object-inspect": "~1.0.0", + "resumer": "~0.0.0", + "through": "~2.3.4" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://npm.yandex-team.ru/through/-/through-2.3.8.tgz?rbtorrent=89b09d636c563ec52d7febab3f13f97fcd652a83", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "0.2.3", + "resolved": "https://npm.yandex-team.ru/through2/-/through2-0.2.3.tgz?rbtorrent=fb9d40ee378ab646e6f0532b64a1b737eca7a062", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://npm.yandex-team.ru/wrappy/-/wrappy-1.0.2.tgz?rbtorrent=24f631e7a60519be5a0a6d43ff4add05afa3e58f", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "license": "ISC" + }, + "node_modules/xtend": { + "version": "2.1.2", + "resolved": "https://npm.yandex-team.ru/xtend/-/xtend-2.1.2.tgz?rbtorrent=3033ddb69a8e3450b21ccb050164af8c6841bf16", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + } + }, + "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://npm.yandex-team.ru/balanced-match/-/balanced-match-1.0.2.tgz?rbtorrent=b5770b454c205809e4f85bb2e3b838b3c634d90b", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://npm.yandex-team.ru/brace-expansion/-/brace-expansion-1.1.11.tgz?rbtorrent=a6f8ec4328e2858a0be33ed363e562a14b677c34", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/concat-map/-/concat-map-0.0.1.tgz?rbtorrent=d68e847684dabaf80403d1a017a6f3fe9f55e5f6", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://npm.yandex-team.ru/core-util-is/-/core-util-is-1.0.3.tgz?rbtorrent=d27ee558e50b9ed57445f731d176aea0c42859fd", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "ctype": { + "version": "0.5.4", + "resolved": "https://npm.yandex-team.ru/ctype/-/ctype-0.5.4.tgz?rbtorrent=5e59ae0b6241afabd00864b8168c09ede4760476", + "integrity": "sha1-XP/7wmZELOihI5pfNwkaCFt6Pm4=" + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://npm.yandex-team.ru/deep-equal/-/deep-equal-1.0.1.tgz?rbtorrent=bb6120a292ff0775d2cdda817095f85b2e32b453", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "defined": { + "version": "0.0.0", + "resolved": "https://npm.yandex-team.ru/defined/-/defined-0.0.0.tgz?rbtorrent=63783194072c9172647b19e37b9c6a0a0646a5e8", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://npm.yandex-team.ru/duplexer/-/duplexer-0.1.2.tgz?rbtorrent=d327b34fe886f5bc4ff2ede48deadbc826227169", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "faucet": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/faucet/-/faucet-0.0.1.tgz?rbtorrent=dc3ae335005e918567abaf3d7b3ead7581396b96", + "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=", + "dev": true, + "requires": { + "defined": "0.0.0", + "duplexer": "~0.1.1", + "minimist": "0.0.5", + "sprintf": "~0.1.3", + "tap-parser": "~0.4.0", + "tape": "~2.3.2", + "through2": "~0.2.3" + }, + "dependencies": { + "deep-equal": { + "version": "0.1.2", + "resolved": "https://npm.yandex-team.ru/deep-equal/-/deep-equal-0.1.2.tgz?rbtorrent=71190fa0c79e4fe27218f07bf2365a6812997318", + "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=", + "dev": true + }, + "tape": { + "version": "2.3.3", + "resolved": "https://npm.yandex-team.ru/tape/-/tape-2.3.3.tgz?rbtorrent=4ce8d02ca0838b14a1942236eeab8d50ce448b96", + "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=", + "dev": true, + "requires": { + "deep-equal": "~0.1.0", + "defined": "~0.0.0", + "inherits": "~2.0.1", + "jsonify": "~0.0.0", + "resumer": "~0.0.0", + "through": "~2.3.4" + } + } + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://npm.yandex-team.ru/glob/-/glob-5.0.15.tgz?rbtorrent=c07091ae949618bfd522317f0ddf6afe895e37c1", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://npm.yandex-team.ru/inflight/-/inflight-1.0.6.tgz?rbtorrent=5fc387705f71d49a3d36c9e8cf63c62f5efe7396", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://npm.yandex-team.ru/inherits/-/inherits-2.0.4.tgz?rbtorrent=6d3c5e553faab1c5a0e5657d5f75d80d275fddbe", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/isarray/-/isarray-0.0.1.tgz?rbtorrent=03495802deeebf1bf29919bd221d5de87ef336c0", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://npm.yandex-team.ru/jsonify/-/jsonify-0.0.1.tgz?rbtorrent=b024ac05b888418446c8c14b5bec876f90c842ba", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://npm.yandex-team.ru/minimatch/-/minimatch-3.1.2.tgz?rbtorrent=ff75648d716a472d61b2fafcf5250b152d4b84b4", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.5", + "resolved": "https://npm.yandex-team.ru/minimist/-/minimist-0.0.5.tgz?rbtorrent=bc442913aa888e6a4695f7c6e5ad21d320d29f5d", + "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=", + "dev": true + }, + "object-inspect": { + "version": "1.0.2", + "resolved": "https://npm.yandex-team.ru/object-inspect/-/object-inspect-1.0.2.tgz?rbtorrent=db8d4f862ea14204edde79d7a42b4104b63cc51a", + "integrity": "sha1-qXiFtVPldetACevAm92psc0hl5o=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://npm.yandex-team.ru/object-keys/-/object-keys-0.4.0.tgz?rbtorrent=5abab1e6fc64e53d4aed4678b8638de46950903b", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://npm.yandex-team.ru/once/-/once-1.4.0.tgz?rbtorrent=631c10ccf90e53addc6a29d4cca37226f2b67537", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://npm.yandex-team.ru/path-is-absolute/-/path-is-absolute-1.0.1.tgz?rbtorrent=1a3152a41be6d5d7ee4d03430b58251761675a06", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "posix-getopt": { + "version": "1.1.0", + "resolved": "https://npm.yandex-team.ru/posix-getopt/-/posix-getopt-1.1.0.tgz?rbtorrent=969b878dc6776778bae3c09d099fb5fe40e0a0c7", + "integrity": "sha1-jiWKyo801pBsFZoysDiDYBl+Vpg=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://npm.yandex-team.ru/readable-stream/-/readable-stream-1.1.14.tgz?rbtorrent=4eed7f7a588d11a80af64b6071d2c98d2fbfcead", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://npm.yandex-team.ru/resumer/-/resumer-0.0.0.tgz?rbtorrent=1c1fdfedd8513d2993c09b6a4b0fd3232e102614", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "sprintf": { + "version": "0.1.5", + "resolved": "https://npm.yandex-team.ru/sprintf/-/sprintf-0.1.5.tgz?rbtorrent=e3b9af3ef3ba61ff2fdf5547fbea35448f1f4bee", + "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://npm.yandex-team.ru/string_decoder/-/string_decoder-0.10.31.tgz?rbtorrent=94cd1f803c59b2c581a3dd3462982cf0d0121fcb", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "tap-parser": { + "version": "0.4.3", + "resolved": "https://npm.yandex-team.ru/tap-parser/-/tap-parser-0.4.3.tgz?rbtorrent=2f767f714fcb6d4cf1090caa61d8246487694a40", + "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.11" + } + }, + "tape": { + "version": "4.0.0", + "resolved": "https://npm.yandex-team.ru/tape/-/tape-4.0.0.tgz?rbtorrent=2450411348a7ed109b8502c9fe0c559cf7379473", + "integrity": "sha1-56XeNWuqZWkasaus2AP3NwIE5VM=", + "dev": true, + "requires": { + "deep-equal": "~1.0.0", + "defined": "~0.0.0", + "glob": "~5.0.3", + "inherits": "~2.0.1", + "object-inspect": "~1.0.0", + "resumer": "~0.0.0", + "through": "~2.3.4" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://npm.yandex-team.ru/through/-/through-2.3.8.tgz?rbtorrent=89b09d636c563ec52d7febab3f13f97fcd652a83", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://npm.yandex-team.ru/through2/-/through2-0.2.3.tgz?rbtorrent=fb9d40ee378ab646e6f0532b64a1b737eca7a062", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://npm.yandex-team.ru/wrappy/-/wrappy-1.0.2.tgz?rbtorrent=24f631e7a60519be5a0a6d43ff4add05afa3e58f", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://npm.yandex-team.ru/xtend/-/xtend-2.1.2.tgz?rbtorrent=3033ddb69a8e3450b21ccb050164af8c6841bf16", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } +} diff --git a/package.json b/package.json index eff34d9..9955bbc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "author": "Mark Cavage ", - "name": "node-ssh-agent", + "name": "@yandex-int/node-ssh-agent", "contributors": [ "Dave Eddy ", "Patrick Mooney ", @@ -27,7 +27,7 @@ }, "devDependencies": { "faucet": "0.0.1", - "tape": "3.5.0" + "tape": "4.0.0" }, "scripts": { "test": "node ./test/agent.test.js | ./node_modules/.bin/faucet" From 85fdd87d79f71dc29d65e750f7e7defe0eb9436e Mon Sep 17 00:00:00 2001 From: anmist Date: Tue, 14 Mar 2023 13:35:34 +0400 Subject: [PATCH 5/9] Add typings --- package-lock.json | 14 ++++++++++++++ package.json | 1 + typings/index.d.ts | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 typings/index.d.ts diff --git a/package-lock.json b/package-lock.json index 827541f..295bf7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "ssha-sign": "bin/ssha-sign" }, "devDependencies": { + "@types/node": "^18.14.2", "faucet": "0.0.1", "tape": "4.0.0" }, @@ -23,6 +24,13 @@ "node": ">= 0.8" } }, + "node_modules/@types/node": { + "version": "18.14.2", + "resolved": "https://npm.yandex-team.ru/@types%2fnode/-/node-18.14.2.tgz?rbtorrent=42b158137067a8fd03b87447de8148c21b3a4f4c", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==", + "dev": true, + "license": "MIT" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://npm.yandex-team.ru/balanced-match/-/balanced-match-1.0.2.tgz?rbtorrent=b5770b454c205809e4f85bb2e3b838b3c634d90b", @@ -353,6 +361,12 @@ } }, "dependencies": { + "@types/node": { + "version": "18.14.2", + "resolved": "https://npm.yandex-team.ru/@types%2fnode/-/node-18.14.2.tgz?rbtorrent=42b158137067a8fd03b87447de8148c21b3a4f4c", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://npm.yandex-team.ru/balanced-match/-/balanced-match-1.0.2.tgz?rbtorrent=b5770b454c205809e4f85bb2e3b838b3c634d90b", diff --git a/package.json b/package.json index 9955bbc..7855e3e 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "posix-getopt": "1.1.0" }, "devDependencies": { + "@types/node": "^18.14.2", "faucet": "0.0.1", "tape": "4.0.0" }, diff --git a/typings/index.d.ts b/typings/index.d.ts new file mode 100644 index 0000000..f589e5a --- /dev/null +++ b/typings/index.d.ts @@ -0,0 +1,20 @@ +export = SSHAgentClient; + +type requestIdentitiesCallback = (e: Error | null, keys: Array) => any; +type signCallback = (e: Error | null, signature: SSHAgent.Signature) => any; + +declare class SSHAgentClient { + timeout: number; + sockFile: string; + constructor(options?: SSHAgent.ClientOptions); + + // На самом деле возвращает Socket + // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах + requestIdentities(callback: requestIdentitiesCallback): void; + + // На самом деле возвращает Socket + // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах + sign(key: SSHAgent.Key, data: Buffer, callback: signCallback): void; +} + +declare const SSHAgentClient: SSHAgentClient; From 857d09b20b6fbb65a912c81da98cbc4c482a9bb6 Mon Sep 17 00:00:00 2001 From: anmist Date: Tue, 14 Mar 2023 13:35:34 +0400 Subject: [PATCH 6/9] Add typings --- package-lock.json | 14 ++++++++++++++ package.json | 1 + typings/index.d.ts | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 typings/index.d.ts diff --git a/package-lock.json b/package-lock.json index 827541f..295bf7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "ssha-sign": "bin/ssha-sign" }, "devDependencies": { + "@types/node": "^18.14.2", "faucet": "0.0.1", "tape": "4.0.0" }, @@ -23,6 +24,13 @@ "node": ">= 0.8" } }, + "node_modules/@types/node": { + "version": "18.14.2", + "resolved": "https://npm.yandex-team.ru/@types%2fnode/-/node-18.14.2.tgz?rbtorrent=42b158137067a8fd03b87447de8148c21b3a4f4c", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==", + "dev": true, + "license": "MIT" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://npm.yandex-team.ru/balanced-match/-/balanced-match-1.0.2.tgz?rbtorrent=b5770b454c205809e4f85bb2e3b838b3c634d90b", @@ -353,6 +361,12 @@ } }, "dependencies": { + "@types/node": { + "version": "18.14.2", + "resolved": "https://npm.yandex-team.ru/@types%2fnode/-/node-18.14.2.tgz?rbtorrent=42b158137067a8fd03b87447de8148c21b3a4f4c", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://npm.yandex-team.ru/balanced-match/-/balanced-match-1.0.2.tgz?rbtorrent=b5770b454c205809e4f85bb2e3b838b3c634d90b", diff --git a/package.json b/package.json index 9955bbc..5f43cb9 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "posix-getopt": "1.1.0" }, "devDependencies": { + "@types/node": "18.14.2", "faucet": "0.0.1", "tape": "4.0.0" }, diff --git a/typings/index.d.ts b/typings/index.d.ts new file mode 100644 index 0000000..f589e5a --- /dev/null +++ b/typings/index.d.ts @@ -0,0 +1,20 @@ +export = SSHAgentClient; + +type requestIdentitiesCallback = (e: Error | null, keys: Array) => any; +type signCallback = (e: Error | null, signature: SSHAgent.Signature) => any; + +declare class SSHAgentClient { + timeout: number; + sockFile: string; + constructor(options?: SSHAgent.ClientOptions); + + // На самом деле возвращает Socket + // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах + requestIdentities(callback: requestIdentitiesCallback): void; + + // На самом деле возвращает Socket + // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах + sign(key: SSHAgent.Key, data: Buffer, callback: signCallback): void; +} + +declare const SSHAgentClient: SSHAgentClient; From 810675d2bc0fb573fe3abfa6e59b3d08047fbf03 Mon Sep 17 00:00:00 2001 From: anmist Date: Tue, 14 Mar 2023 14:25:59 +0400 Subject: [PATCH 7/9] Update version --- package.json | 4 ++-- typings/ssh_agent_client.d.ts | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4d20804..c321f67 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "Anastasia Tumanova " ], "description": "Copy of git://github.com/mcavage/node-ssh-agent.git", - "version": "0.0.1", + "version": "0.0.2", "repository": { "type": "git", "url": "git://github.com/anmisttt/node-ssh-agent.git" @@ -18,7 +18,7 @@ "ssha-sign": "./bin/ssha-sign" }, "main": "lib/ssh_agent_client", - "types": "./typings/ssh_agent_client.d.ts", + "types": "typings/ssh_agent_client.d.ts", "engines": { "node": ">= 0.8" }, diff --git a/typings/ssh_agent_client.d.ts b/typings/ssh_agent_client.d.ts index f589e5a..35742f1 100644 --- a/typings/ssh_agent_client.d.ts +++ b/typings/ssh_agent_client.d.ts @@ -1,5 +1,3 @@ -export = SSHAgentClient; - type requestIdentitiesCallback = (e: Error | null, keys: Array) => any; type signCallback = (e: Error | null, signature: SSHAgent.Signature) => any; @@ -17,4 +15,4 @@ declare class SSHAgentClient { sign(key: SSHAgent.Key, data: Buffer, callback: signCallback): void; } -declare const SSHAgentClient: SSHAgentClient; +export const SSHAgentClient: SSHAgentClient; From 6e4410ddd0f26361b733b6082e6161174e6ef3b5 Mon Sep 17 00:00:00 2001 From: anmist Date: Tue, 14 Mar 2023 15:33:11 +0400 Subject: [PATCH 8/9] Update typings --- package.json | 2 +- typings/ssh_agent_client.d.ts | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c321f67..4a4304f 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "Anastasia Tumanova " ], "description": "Copy of git://github.com/mcavage/node-ssh-agent.git", - "version": "0.0.2", + "version": "0.0.3", "repository": { "type": "git", "url": "git://github.com/anmisttt/node-ssh-agent.git" diff --git a/typings/ssh_agent_client.d.ts b/typings/ssh_agent_client.d.ts index 35742f1..0be264c 100644 --- a/typings/ssh_agent_client.d.ts +++ b/typings/ssh_agent_client.d.ts @@ -1,7 +1,24 @@ +export namespace SSHAgent { + interface Key { + type: string; + ssh_key: string; + comment: string; + } + + interface Signature { + type: Buffer; + signature: string; + } + + interface ClientOptions { + timeout?: number; + } +} + type requestIdentitiesCallback = (e: Error | null, keys: Array) => any; type signCallback = (e: Error | null, signature: SSHAgent.Signature) => any; -declare class SSHAgentClient { +export class SSHAgentClient { timeout: number; sockFile: string; constructor(options?: SSHAgent.ClientOptions); @@ -13,6 +30,4 @@ declare class SSHAgentClient { // На самом деле возвращает Socket // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах sign(key: SSHAgent.Key, data: Buffer, callback: signCallback): void; -} - -export const SSHAgentClient: SSHAgentClient; +} \ No newline at end of file From 6e5daa8e0c062d7c310daefbf00aeda9ab725c96 Mon Sep 17 00:00:00 2001 From: anmist Date: Wed, 15 Mar 2023 09:36:35 +0400 Subject: [PATCH 9/9] Update typings --- package-lock.json | 4 ++-- package.json | 2 +- typings/ssh_agent_client.d.ts | 16 +++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09b31e9..76ca28f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@yandex-int/node-ssh-agent", - "version": "0.0.1", + "version": "0.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@yandex-int/node-ssh-agent", - "version": "0.0.1", + "version": "0.0.4", "dependencies": { "ctype": "0.5.4", "posix-getopt": "1.1.0" diff --git a/package.json b/package.json index 4a4304f..450fdb0 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "Anastasia Tumanova " ], "description": "Copy of git://github.com/mcavage/node-ssh-agent.git", - "version": "0.0.3", + "version": "0.0.4", "repository": { "type": "git", "url": "git://github.com/anmisttt/node-ssh-agent.git" diff --git a/typings/ssh_agent_client.d.ts b/typings/ssh_agent_client.d.ts index 0be264c..89d92a7 100644 --- a/typings/ssh_agent_client.d.ts +++ b/typings/ssh_agent_client.d.ts @@ -1,4 +1,4 @@ -export namespace SSHAgent { +declare namespace SSHAgentClient { interface Key { type: string; ssh_key: string; @@ -15,13 +15,13 @@ export namespace SSHAgent { } } -type requestIdentitiesCallback = (e: Error | null, keys: Array) => any; -type signCallback = (e: Error | null, signature: SSHAgent.Signature) => any; +type requestIdentitiesCallback = (e: Error | null, keys: Array) => any; +type signCallback = (e: Error | null, signature: SSHAgentClient.Signature) => any; -export class SSHAgentClient { +declare class SSHAgentClient { timeout: number; sockFile: string; - constructor(options?: SSHAgent.ClientOptions); + constructor(options?: SSHAgentClient.ClientOptions); // На самом деле возвращает Socket // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах @@ -29,5 +29,7 @@ export class SSHAgentClient { // На самом деле возвращает Socket // Ставлю void, чтобы этим никто не воспользовался и было проще стабать в тестах - sign(key: SSHAgent.Key, data: Buffer, callback: signCallback): void; -} \ No newline at end of file + sign(key: SSHAgentClient.Key, data: Buffer, callback: signCallback): void; +} + +export = SSHAgentClient; \ No newline at end of file