From 4144c3caed233a74f4b03f0c0bffe8aaf910e72c Mon Sep 17 00:00:00 2001 From: Robert Rossmann Date: Tue, 5 Mar 2019 10:45:15 +0100 Subject: [PATCH] =?UTF-8?q?feat(ui):=20move=20socket/port=20creation=20to?= =?UTF-8?q?=20a=20bundled=20dependency=20=F0=9F=8E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This prepares us for making the socket/port location generation code to be shared between the UI and the reporter, thus allowing end users to omit the socket address from the config in most circumstances. 😍 --- .../atom-ide-mocha-core/package-lock.json | 29 +++++-------------- packages/atom-ide-mocha-core/package.json | 5 +++- packages/atom-ide-mocha-core/src/util.mjs | 17 +---------- packages/utils/package-lock.json | 21 ++++++++++++++ packages/utils/package.json | 19 ++++++++++++ packages/utils/src/index.mjs | 29 +++++++++++++++++++ 6 files changed, 82 insertions(+), 38 deletions(-) create mode 100644 packages/utils/package-lock.json create mode 100644 packages/utils/package.json create mode 100644 packages/utils/src/index.mjs diff --git a/packages/atom-ide-mocha-core/package-lock.json b/packages/atom-ide-mocha-core/package-lock.json index 8c0e15a..f067017 100644 --- a/packages/atom-ide-mocha-core/package-lock.json +++ b/packages/atom-ide-mocha-core/package-lock.json @@ -26,19 +26,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "hash-index": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hash-index/-/hash-index-3.0.0.tgz", - "integrity": "sha1-5OyddQsxAo1uFdFM3cf9luEhElk=" - }, - "hash-to-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hash-to-port/-/hash-to-port-1.0.0.tgz", - "integrity": "sha1-GJveIkl3jQLIbMWRJEmTFA8Zpmk=", - "requires": { - "hash-index": "^3.0.0" - } - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -61,7 +48,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -74,9 +61,9 @@ } }, "remote-event-emitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remote-event-emitter/-/remote-event-emitter-1.1.0.tgz", - "integrity": "sha512-7iCwrkee63WMkdDHGxG5bCzHcFyqwFlBF6+5GvJ0+0zsAxqXcHNcUlHn5cUlU2JjTdMBdtl1ce+akUNQV5siSg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remote-event-emitter/-/remote-event-emitter-1.2.0.tgz", + "integrity": "sha512-VYADzXfQ6RRKsTbFNB6G9ujWCOuo3NcugHHmBiXeDQR0bge/hqD4N7AmSlmOb3pUdu9fbsipnhpr2t2UMmnGBw==", "requires": { "binary-split": "^1.0.5" } @@ -106,13 +93,13 @@ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" diff --git a/packages/atom-ide-mocha-core/package.json b/packages/atom-ide-mocha-core/package.json index bc981d1..0e68e64 100644 --- a/packages/atom-ide-mocha-core/package.json +++ b/packages/atom-ide-mocha-core/package.json @@ -9,11 +9,14 @@ "bugs": "https://github.com/Dreamscapes/atom-ide-mocha-core/issues", "contributors": [], "dependencies": { + "@atom-ide/utils": "^1.0.0", "atom-package-deps": "^5.0.0", - "hash-to-port": "^1.0.0", "remote-event-emitter": "^1.1.0", "stack-utils": "^1.0.1" }, + "bundledDependencies": [ + "@atom-ide/utils" + ], "engines": { "atom": "^1.32.0", "node": "^10.0.0" diff --git a/packages/atom-ide-mocha-core/src/util.mjs b/packages/atom-ide-mocha-core/src/util.mjs index aeaef2e..afdda47 100644 --- a/packages/atom-ide-mocha-core/src/util.mjs +++ b/packages/atom-ide-mocha-core/src/util.mjs @@ -1,22 +1,7 @@ -import * as os from 'os' -import * as path from 'path' -import * as hashToPort from 'hash-to-port' +import { mkaddress } from '@atom-ide/utils' const CONSOLE_VIEW_URI = 'atom://nuclide/console' -function mkaddress({ root, type = 'unix' }) { - const name = path.basename(root) - - switch (type) { - case 'unix': - return path.resolve(os.tmpdir(), `ide-mocha-${name}.sock`) - case 'IP': - return hashToPort(name) - default: - throw new Error(`Unknown address interface type: ${type}`) - } -} - function mkcommandinfo({ address }) { return [ 'npx mocha', diff --git a/packages/utils/package-lock.json b/packages/utils/package-lock.json new file mode 100644 index 0000000..4aeb74b --- /dev/null +++ b/packages/utils/package-lock.json @@ -0,0 +1,21 @@ +{ + "name": "@atom-ide/utils", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "hash-index": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hash-index/-/hash-index-3.0.0.tgz", + "integrity": "sha1-5OyddQsxAo1uFdFM3cf9luEhElk=" + }, + "hash-to-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hash-to-port/-/hash-to-port-1.0.0.tgz", + "integrity": "sha1-GJveIkl3jQLIbMWRJEmTFA8Zpmk=", + "requires": { + "hash-index": "^3.0.0" + } + } + } +} diff --git a/packages/utils/package.json b/packages/utils/package.json new file mode 100644 index 0000000..7fd7671 --- /dev/null +++ b/packages/utils/package.json @@ -0,0 +1,19 @@ +{ + "name": "@atom-ide/utils", + "description": "Code shared across multiple core packages in this monorepo", + "version": "1.0.0", + "author": "Robert Rossmann ", + "bugs": "https://github.com/Dreamscapes/atom-ide-mocha-core/issues", + "contributors": [], + "dependencies": { + "hash-to-port": "^1.0.0" + }, + "homepage": "https://github.com/Dreamscapes/atom-ide-mocha-core/tree/master/packages/utils", + "keywords": [], + "license": "BSD-3-Clause", + "main": "src", + "repository": { + "type": "git", + "url": "git://github.com/Dreamscapes/atom-ide-mocha-core.git" + } +} diff --git a/packages/utils/src/index.mjs b/packages/utils/src/index.mjs new file mode 100644 index 0000000..ca1abdd --- /dev/null +++ b/packages/utils/src/index.mjs @@ -0,0 +1,29 @@ +import * as os from 'os' +import * as path from 'path' +import * as hashToPort from 'hash-to-port' + +/** + * Create a socket address or port in a deterministic way for a given absolute directory path + * + * @param {Object} options Function options + * @param {String} options.root Absolute path to the directory + * @param {String} options.mode Interface mode. Either `unix` or `ip`. + * @return {String} A full path to the socket + */ +function mkaddress({ root, mode = 'unix' }) { + const name = path.basename(root) + + switch (mode) { + case 'unix': + return path.resolve(os.tmpdir(), `ide-mocha-${name}.sock`) + case 'IP': + case 'ip': + return hashToPort(name) + default: + throw new Error(`Unknown address interface mode: ${mode}`) + } +} + +export { + mkaddress, +}