diff --git a/package.json b/package.json index 44f37a00e..ee0836b43 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "license": "MIT", "leadMaintainer": "Hugo Dias ", "files": [ + "dist/utils", "cmds", "utils", "src", @@ -27,8 +28,16 @@ "bin": { "aegir": "cli.js" }, + "typesVersions": { + "*": { + "utils/*": [ + "dist/utils/*" + ] + } + }, "repository": "github:ipfs/aegir", "scripts": { + "prepare": "tsc -p tsconfig-types.json", "lint": "node cli.js lint", "test:node": "node cli.js test -t node", "test:browser": "node cli.js test -t browser webworker", @@ -58,6 +67,10 @@ "@commitlint/travis-cli": "^11.0.0", "@electron/get": "^1.10.0", "@polka/send-type": "^0.5.2", + "@types/chai": "^4.2.14", + "@types/chai-as-promised": "^7.1.3", + "@types/chai-subset": "^1.3.3", + "@types/dirty-chai": "^2.0.2", "@types/mocha": "^8.2.0", "@types/node": "^14.14.13", "aegir-typedoc-theme": "^0.1.0", @@ -125,6 +138,7 @@ "yargs-parser": "^20.2.3" }, "devDependencies": { + "@types/polka": "^0.5.1", "electron": "^11.1.0", "iso-url": "^1.0.0", "mock-require": "^3.0.2", diff --git a/tsconfig-types.json b/tsconfig-types.json new file mode 100644 index 000000000..0fde05491 --- /dev/null +++ b/tsconfig-types.json @@ -0,0 +1,11 @@ +{ + "extends": "./src/config/tsconfig.aegir.json", + "compilerOptions": { + "outDir": "dist", + "noEmit": false, + "emitDeclarationOnly": true + }, + "include": [ + "utils" + ] +} diff --git a/tsconfig.json b/tsconfig.json index 05efde215..0c91f476f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,6 +4,7 @@ "outDir": "dist" }, "include": [ - "src", "test" + "src", + "test" ] } diff --git a/utils/echo-server.js b/utils/echo-server.js index b8b1d1d4d..3298ec056 100644 --- a/utils/echo-server.js +++ b/utils/echo-server.js @@ -1,3 +1,4 @@ +// @ts-nocheck 'use strict' const send = require('@polka/send-type') @@ -8,6 +9,13 @@ const { Buffer } = require('buffer') const getPort = require('./get-port') class EchoServer { + /** + * + * @param {Object} options - server options + * @param {number} [options.port] - server port + * @param {string} [options.host] - server host + * @param {boolean} [options.findPort] - flag to check for ports + */ constructor (options = {}) { this.options = options this.port = options.port || 3000 @@ -42,7 +50,7 @@ class EchoServer { const listen = new Promise((resolve, reject) => { this.server.once('error', reject) this.polka.listen({ host: this.host, port: this.port }, () => { - resolve() + resolve(true) }) }) await listen @@ -56,7 +64,7 @@ class EchoServer { const stop = new Promise((resolve, reject) => { this.server.once('error', reject) this.server.close((err) => { - err ? reject(err) : resolve() + err ? reject(err) : resolve(true) }) }) await stop diff --git a/utils/get-port.js b/utils/get-port.js index b21c0b64c..2513544a8 100644 --- a/utils/get-port.js +++ b/utils/get-port.js @@ -2,10 +2,18 @@ const { createServer } = require('net') +/** + * Get a free port + * + * @param {number} port + * @param {string} host + * @returns {Promise} + */ function getPort (port = 3000, host = '127.0.0.1') { const server = createServer() return new Promise((resolve, reject) => { server.on('error', (err) => { + // @ts-ignore if (err.code === 'EADDRINUSE' || err.code === 'EACCES') { server.listen(0, host) } else { @@ -13,6 +21,7 @@ function getPort (port = 3000, host = '127.0.0.1') { } }) server.on('listening', () => { + // @ts-ignore const { port } = server.address() server.close(() => resolve(port)) })