From 87fa0d925408e6e82e7c8bede7a7dce18e835245 Mon Sep 17 00:00:00 2001 From: eslam Date: Mon, 17 Jun 2019 08:31:57 +0200 Subject: [PATCH 1/3] refactor: union sockHost, sockPath and sockPort in clientSocketOptions --- lib/Server.js | 8 +++-- lib/options.json | 43 ++++++++++++------------ lib/utils/addEntries.js | 10 ++++-- lib/utils/createConfig.js | 15 ++++++--- test/e2e/ClientOptions.test.js | 18 +++++++--- test/options.test.js | 14 ++------ test/server/sockPath-option.test.js | 4 ++- test/server/transportMode-option.test.js | 6 ++-- 8 files changed, 68 insertions(+), 50 deletions(-) diff --git a/lib/Server.js b/lib/Server.js index 1d59bcbca3..6a40a9b0af 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -91,10 +91,14 @@ class Server { this.hot = this.options.hot || this.options.hotOnly; this.watchOptions = options.watchOptions || {}; + if (!this.options.clientSocketOptions) { + this.options.clientSocketOptions = {}; + } + // Replace leading and trailing slashes to normalize path this.sockPath = `/${ - this.options.sockPath - ? this.options.sockPath.replace(/^\/|\/$/g, '') + this.options.clientSocketOptions.path + ? this.options.clientSocketOptions.path.replace(/^\/|\/$/g, '') : 'sockjs-node' }`; diff --git a/lib/options.json b/lib/options.json index 87319af51c..c2b65dcc16 100644 --- a/lib/options.json +++ b/lib/options.json @@ -39,6 +39,26 @@ "clientLogLevel": { "enum": ["info", "warn", "error", "debug", "trace", "silent"] }, + "clientSocketOptions": { + "anyOf": [ + { + "type": "array" + }, + { + "type": "object" + } + ], + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + } + }, "compress": { "type": "boolean" }, @@ -297,25 +317,6 @@ "setup": { "instanceof": "Function" }, - "sockHost": { - "type": "string" - }, - "sockPath": { - "type": "string" - }, - "sockPort": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "null" - } - ] - }, "socket": { "type": "string" }, @@ -403,6 +404,7 @@ "ca": "should be {String|Buffer}", "cert": "should be {String|Buffer}", "clientLogLevel": "should be {String} and equal to one of the allowed values\n\n [ 'silent', 'info', 'debug', 'trace', 'error', 'warn' ]\n\n (https://webpack.js.org/configuration/dev-server/#devserverclientloglevel)", + "clientSocketOptions": "should be {Array} (https://webpack.js.org/configuration/dev-server/#devserverclientsocketoptions)", "compress": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devservercompress)", "contentBase": "should be {Number|String|Array} (https://webpack.js.org/configuration/dev-server/#devservercontentbase)", "disableHostCheck": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devserverdisablehostcheck)", @@ -446,9 +448,6 @@ "serveIndex": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devserverserveindex)", "serverSideRender": "should be {Boolean} (https://github.com/webpack/webpack-dev-middleware#serversiderender)", "setup": "should be {Function} (https://webpack.js.org/configuration/dev-server/#devserversetup)", - "sockHost": "should be {String|Null} (https://webpack.js.org/configuration/dev-server/#devserversockhost)", - "sockPath": "should be {String} (https://webpack.js.org/configuration/dev-server/#devserversockpath)", - "sockPort": "should be {Number|String|Null} (https://webpack.js.org/configuration/dev-server/#devserversockport)", "socket": "should be {String} (https://webpack.js.org/configuration/dev-server/#devserversocket)", "staticOptions": "should be {Object} (https://webpack.js.org/configuration/dev-server/#devserverstaticoptions)", "stats": "should be {Object|Boolean} (https://webpack.js.org/configuration/dev-server/#devserverstats-)", diff --git a/lib/utils/addEntries.js b/lib/utils/addEntries.js index 501b12e080..4bba943c40 100644 --- a/lib/utils/addEntries.js +++ b/lib/utils/addEntries.js @@ -27,14 +27,18 @@ function addEntries(config, options, server) { }, }; + if (!options.clientSocketOptions) { + options.clientSocketOptions = {}; + } + /** @type {string} */ const domain = createDomain(options, app); /** @type {string} */ - const sockHost = options.sockHost ? `&sockHost=${options.sockHost}` : ''; + const sockHost = options.clientSocketOptions.host ? `&sockHost=${options.clientSocketOptions.host}` : ''; /** @type {string} */ - const sockPath = options.sockPath ? `&sockPath=${options.sockPath}` : ''; + const sockPath = options.clientSocketOptions.path ? `&sockPath=${options.clientSocketOptions.path}` : ''; /** @type {string} */ - const sockPort = options.sockPort ? `&sockPort=${options.sockPort}` : ''; + const sockPort = options.clientSocketOptions.port ? `&sockPort=${options.clientSocketOptions.port}` : ''; /** @type {string} */ const clientEntry = `${require.resolve( '../../client/' diff --git a/lib/utils/createConfig.js b/lib/utils/createConfig.js index d5a3e1db99..4400a93664 100644 --- a/lib/utils/createConfig.js +++ b/lib/utils/createConfig.js @@ -10,7 +10,7 @@ function createConfig(config, argv, { port }) { // This updates both config and firstWpOpt firstWpOpt.mode = defaultTo(firstWpOpt.mode, 'development'); - + console.error(argv); if (argv.bonjour) { options.bonjour = true; } @@ -31,16 +31,23 @@ function createConfig(config, argv, { port }) { options.socket = argv.socket; } + if ( + (argv.sockHost || argv.sockPath || argv.sockPort) && + !options.clientSocketOptions + ) { + options.clientSocketOptions = []; + } + if (argv.sockHost) { - options.sockHost = argv.sockHost; + options.clientSocketOptions.host = argv.sockHost; } if (argv.sockPath) { - options.sockPath = argv.sockPath; + options.clientSocketOptions.path = argv.sockPath; } if (argv.sockPort) { - options.sockPort = argv.sockPort; + options.clientSocketOptions.port = argv.sockPort; } if (argv.liveReload === false) { diff --git a/test/e2e/ClientOptions.test.js b/test/e2e/ClientOptions.test.js index 1d7f4aa6e8..42b971359b 100644 --- a/test/e2e/ClientOptions.test.js +++ b/test/e2e/ClientOptions.test.js @@ -96,7 +96,9 @@ describe('Client complex inline script path', () => { poll: true, }, public: 'myhost.test', - sockPath: '/foo/test/bar/', + clientSocketOptions: { + path: '/foo/test/bar/', + }, quiet: true, }; testServer.startAwaitingCompilation(config, options, done); @@ -138,8 +140,10 @@ describe('Client complex inline script path with sockPort', () => { watchOptions: { poll: true, }, - sockPath: '/foo/test/bar/', - sockPort: port3, + clientSocketOptions: { + path: '/foo/test/bar/', + port: port3, + }, quiet: true, }; testServer.startAwaitingCompilation(config, options, done); @@ -185,7 +189,9 @@ describe('Client complex inline script path with sockPort, no sockPath', () => { watchOptions: { poll: true, }, - sockPort: port3, + clientSocketOptions: { + port: port3, + }, quiet: true, }; testServer.startAwaitingCompilation(config, options, done); @@ -225,7 +231,9 @@ describe('Client complex inline script path with sockHost', () => { watchOptions: { poll: true, }, - sockHost: 'myhost.test', + clientSocketOptions: { + host: 'myhost.test', + }, quiet: true, }; testServer.startAwaitingCompilation(config, options, done); diff --git a/test/options.test.js b/test/options.test.js index 8f41f4b65f..e3ab831442 100644 --- a/test/options.test.js +++ b/test/options.test.js @@ -290,17 +290,9 @@ describe('options', () => { success: [''], failure: [false], }, - sockHost: { - success: [''], - failure: [false], - }, - sockPath: { - success: [''], - failure: [false], - }, - sockPort: { - success: ['', 0, null], - failure: [false], + clientSocketOptions: { + success: [[], ['']], + failure: [[false], false], }, staticOptions: { success: [{}], diff --git a/test/server/sockPath-option.test.js b/test/server/sockPath-option.test.js index 860e3818be..484cbfaf76 100644 --- a/test/server/sockPath-option.test.js +++ b/test/server/sockPath-option.test.js @@ -37,7 +37,9 @@ describe('sockPath options', () => { server = testServer.start( config, { - sockPath: '/foo/test/bar/', + clientSocketOptions: { + path: '/foo/test/bar/', + }, port, }, done diff --git a/test/server/transportMode-option.test.js b/test/server/transportMode-option.test.js index d4a54ffc12..55d819fa4e 100644 --- a/test/server/transportMode-option.test.js +++ b/test/server/transportMode-option.test.js @@ -195,7 +195,9 @@ describe('transportMode', () => { config, { port, - sockPath: '/foo/test/bar/', + clientSocketOptions: { + path: '/foo/test/bar/', + }, transportMode: { server: class MySockJSServer extends BaseServer { constructor(serv) { @@ -217,7 +219,7 @@ describe('transportMode', () => { prefix: this.server.sockPath, }); - sockPath = server.options.sockPath; + sockPath = server.options.clientSocketOptions.path; } send(connection, message) { From ff8b9812880875a2cea5558a1a9aea79632c354e Mon Sep 17 00:00:00 2001 From: eslam Date: Mon, 17 Jun 2019 08:36:51 +0200 Subject: [PATCH 2/3] refactor: remove console.error --- lib/utils/createConfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/createConfig.js b/lib/utils/createConfig.js index 4400a93664..ae1be7a511 100644 --- a/lib/utils/createConfig.js +++ b/lib/utils/createConfig.js @@ -10,7 +10,7 @@ function createConfig(config, argv, { port }) { // This updates both config and firstWpOpt firstWpOpt.mode = defaultTo(firstWpOpt.mode, 'development'); - console.error(argv); + if (argv.bonjour) { options.bonjour = true; } From a2a51022546aafbbc916902e0054933500dac64b Mon Sep 17 00:00:00 2001 From: eslam Date: Wed, 25 Sep 2019 16:24:00 +0200 Subject: [PATCH 3/3] refactor: update snapshot & change clientSocketOptions type to Object --- lib/options.json | 33 ++++++++++--------- lib/utils/createConfig.js | 2 +- test/options.test.js | 4 +-- .../__snapshots__/createConfig.test.js.snap | 12 +++++-- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/lib/options.json b/lib/options.json index c2b65dcc16..d12f058346 100644 --- a/lib/options.json +++ b/lib/options.json @@ -40,23 +40,24 @@ "enum": ["info", "warn", "error", "debug", "trace", "silent"] }, "clientSocketOptions": { - "anyOf": [ - { - "type": "array" + "type": "object", + "properties": { + "host": { + "type": "string" }, - { - "type": "object" + "path": { + "type": "string" + }, + "port": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] } - ], - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ] } }, "compress": { @@ -404,7 +405,7 @@ "ca": "should be {String|Buffer}", "cert": "should be {String|Buffer}", "clientLogLevel": "should be {String} and equal to one of the allowed values\n\n [ 'silent', 'info', 'debug', 'trace', 'error', 'warn' ]\n\n (https://webpack.js.org/configuration/dev-server/#devserverclientloglevel)", - "clientSocketOptions": "should be {Array} (https://webpack.js.org/configuration/dev-server/#devserverclientsocketoptions)", + "clientSocketOptions": "should be {Object} (https://webpack.js.org/configuration/dev-server/#devserverclientsocketoptions)", "compress": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devservercompress)", "contentBase": "should be {Number|String|Array} (https://webpack.js.org/configuration/dev-server/#devservercontentbase)", "disableHostCheck": "should be {Boolean} (https://webpack.js.org/configuration/dev-server/#devserverdisablehostcheck)", diff --git a/lib/utils/createConfig.js b/lib/utils/createConfig.js index ae1be7a511..8e7475035f 100644 --- a/lib/utils/createConfig.js +++ b/lib/utils/createConfig.js @@ -35,7 +35,7 @@ function createConfig(config, argv, { port }) { (argv.sockHost || argv.sockPath || argv.sockPort) && !options.clientSocketOptions ) { - options.clientSocketOptions = []; + options.clientSocketOptions = {}; } if (argv.sockHost) { diff --git a/test/options.test.js b/test/options.test.js index e3ab831442..1c28806cf7 100644 --- a/test/options.test.js +++ b/test/options.test.js @@ -291,8 +291,8 @@ describe('options', () => { failure: [false], }, clientSocketOptions: { - success: [[], ['']], - failure: [[false], false], + success: [{}], + failure: [false], }, staticOptions: { success: [{}], diff --git a/test/server/utils/__snapshots__/createConfig.test.js.snap b/test/server/utils/__snapshots__/createConfig.test.js.snap index 585d74105c..9e9b6ea851 100644 --- a/test/server/utils/__snapshots__/createConfig.test.js.snap +++ b/test/server/utils/__snapshots__/createConfig.test.js.snap @@ -1202,12 +1202,14 @@ Object { exports[`createConfig sockHost option 1`] = ` Object { + "clientSocketOptions": Object { + "host": true, + }, "hot": true, "hotOnly": false, "noInfo": true, "port": 8080, "publicPath": "/", - "sockHost": true, "stats": Object { "cached": false, "cachedAssets": false, @@ -1217,12 +1219,14 @@ Object { exports[`createConfig sockPath option 1`] = ` Object { + "clientSocketOptions": Object { + "path": "path", + }, "hot": true, "hotOnly": false, "noInfo": true, "port": 8080, "publicPath": "/", - "sockPath": "path", "stats": Object { "cached": false, "cachedAssets": false, @@ -1232,12 +1236,14 @@ Object { exports[`createConfig sockPort option 1`] = ` Object { + "clientSocketOptions": Object { + "port": "port", + }, "hot": true, "hotOnly": false, "noInfo": true, "port": 8080, "publicPath": "/", - "sockPort": "port", "stats": Object { "cached": false, "cachedAssets": false,