diff --git a/client-src/default-redirect/index.js b/client-src/default-redirect/index.js new file mode 100644 index 0000000000..a54847adba --- /dev/null +++ b/client-src/default-redirect/index.js @@ -0,0 +1,8 @@ +'use strict'; + +/* global __resourceQuery */ + +// eslint-disable-next-line import/no-unresolved, import/no-dynamic-require +module.exports = require(`./default/index${ + typeof __resourceQuery === 'string' ? __resourceQuery : '' +}`); diff --git a/client-src/default-redirect/overlay.js b/client-src/default-redirect/overlay.js new file mode 100644 index 0000000000..35825f04b4 --- /dev/null +++ b/client-src/default-redirect/overlay.js @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line import/no-unresolved +module.exports = require(`./default/overlay`); diff --git a/client-src/default-redirect/socket.js b/client-src/default-redirect/socket.js new file mode 100644 index 0000000000..dbc8bc2fd2 --- /dev/null +++ b/client-src/default-redirect/socket.js @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line import/no-unresolved +module.exports = require(`./default/socket`); diff --git a/client-src/default-redirect/utils/createSocketUrl.js b/client-src/default-redirect/utils/createSocketUrl.js new file mode 100644 index 0000000000..3a4b043f56 --- /dev/null +++ b/client-src/default-redirect/utils/createSocketUrl.js @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line import/no-unresolved +module.exports = require(`../default/utils/createSocketUrl`); diff --git a/client-src/default-redirect/utils/getCurrentScriptSource.js b/client-src/default-redirect/utils/getCurrentScriptSource.js new file mode 100644 index 0000000000..1d14374e41 --- /dev/null +++ b/client-src/default-redirect/utils/getCurrentScriptSource.js @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line import/no-unresolved +module.exports = require(`../default/utils/getCurrentScriptSource`); diff --git a/client-src/default-redirect/utils/log.js b/client-src/default-redirect/utils/log.js new file mode 100644 index 0000000000..ce0aeb3f13 --- /dev/null +++ b/client-src/default-redirect/utils/log.js @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line import/no-unresolved +module.exports = require(`../default/utils/log`); diff --git a/client-src/default-redirect/utils/reloadApp.js b/client-src/default-redirect/utils/reloadApp.js new file mode 100644 index 0000000000..ec9be75e0c --- /dev/null +++ b/client-src/default-redirect/utils/reloadApp.js @@ -0,0 +1,4 @@ +'use strict'; + +// eslint-disable-next-line import/no-unresolved +module.exports = require(`../default/utils/reloadApp`); diff --git a/client-src/default-redirect/utils/sendMessage.js b/client-src/default-redirect/utils/sendMessage.js new file mode 100644 index 0000000000..71f03365b2 --- /dev/null +++ b/client-src/default-redirect/utils/sendMessage.js @@ -0,0 +1,8 @@ +'use strict'; + +/* global __resourceQuery */ + +// eslint-disable-next-line import/no-unresolved, import/no-dynamic-require +module.exports = require(`../default/utils/sendMessage${ + typeof __resourceQuery === 'string' ? __resourceQuery : '' +}`); diff --git a/client-src/default/socket.js b/client-src/default/socket.js index 7752ffea8a..9668df465a 100644 --- a/client-src/default/socket.js +++ b/client-src/default/socket.js @@ -9,14 +9,10 @@ // is off or the client is not injected. This will be switched to // WebsocketClient when it becomes the default -// important: the path to SockJSClient here is made to work in the 'client' -// directory, but is updated via the webpack compilation when compiled from -// the 'client-src' directory const Client = typeof __webpack_dev_server_client__ !== 'undefined' ? __webpack_dev_server_client__ - : // eslint-disable-next-line import/no-unresolved - require('./clients/SockJSClient'); + : require('../clients/SockJSClient'); let retries = 0; let client = null; diff --git a/client-src/default/webpack.config.js b/client-src/default/webpack.config.js index ac001f26d7..a0b70901ca 100644 --- a/client-src/default/webpack.config.js +++ b/client-src/default/webpack.config.js @@ -1,7 +1,5 @@ 'use strict'; -const webpack = require('webpack'); - module.exports = { mode: 'production', module: { @@ -17,12 +15,4 @@ module.exports = { }, ], }, - plugins: [ - new webpack.NormalModuleReplacementPlugin(/\/clients\//, (resource) => { - resource.request = resource.request.replace( - /\/clients\//, - '/../clients/' - ); - }), - ], }; diff --git a/client-src/live/webpack.config.js b/client-src/live/webpack.config.js index 3887b38b2b..75e693210a 100644 --- a/client-src/live/webpack.config.js +++ b/client-src/live/webpack.config.js @@ -1,7 +1,6 @@ 'use strict'; const path = require('path'); -const webpack = require('webpack'); const CopyPlugin = require('copy-webpack-plugin'); module.exports = { @@ -34,11 +33,5 @@ module.exports = { to: path.resolve(__dirname, '../../client/live.html'), }, ]), - new webpack.NormalModuleReplacementPlugin(/\/clients\//, (resource) => { - resource.request = resource.request.replace( - /\/clients\//, - '/../clients/' - ); - }), ], }; diff --git a/package.json b/package.json index 715246c308..ce43a762f4 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "test": "npm run test:coverage", "pretest": "npm run lint", "prepare": "rimraf ./ssl/*.pem && npm run build:client", - "build:client:default": "babel client-src/default --out-dir client --ignore \"./client-src/default/*.config.js\"", + "build:client:default": "babel client-src/default --out-dir client/default --ignore \"./client-src/default/*.config.js\"", + "build:client:default-redirect": "babel client-src/default-redirect --out-dir client", "build:client:clients": "babel client-src/clients --out-dir client/clients", "build:client:index": "webpack ./client-src/default/index.js -o client/index.bundle.js --color --config client-src/default/webpack.config.js", "build:client:live": "webpack ./client-src/live/index.js -o client/live.bundle.js --color --config client-src/live/webpack.config.js", diff --git a/test/client/clients/SockJSClient.test.js b/test/client/clients/SockJSClient.test.js index a5b667c03a..7adc3d333f 100644 --- a/test/client/clients/SockJSClient.test.js +++ b/test/client/clients/SockJSClient.test.js @@ -3,7 +3,7 @@ const http = require('http'); const express = require('express'); const sockjs = require('sockjs'); -const SockJSClient = require('../../../client-src/clients/SockJSClient'); +const SockJSClient = require('../../../client/clients/SockJSClient'); const port = require('../../ports-map').sockJSClient; describe('SockJSClient', () => { diff --git a/test/client/index.test.js b/test/client/index.test.js index 053ee295bc..a75b8a1e49 100644 --- a/test/client/index.test.js +++ b/test/client/index.test.js @@ -17,45 +17,49 @@ describe('index', () => { const resourceQueryValue = global.__resourceQuery; beforeEach(() => { - global.__resourceQuery = 'foo'; + // make this an empty string so that it works on Node when we need + // to redirect the __resourceQuery to another file, + // e.g. require(`./index${__resourceQuery}`) will not work with Node + // unless __resourceQuery === '' + global.__resourceQuery = ''; self.location.reload = jest.fn(); // log - jest.setMock('../../client-src/default/utils/log.js', { + jest.setMock('../../client/default/utils/log.js', { log: { info: jest.fn(), warn: jest.fn(), error: jest.fn(), }, }); - log = require('../../client-src/default/utils/log'); + log = require('../../client/utils/log'); // socket - jest.setMock('../../client-src/default/socket.js', jest.fn()); - socket = require('../../client-src/default/socket'); + jest.setMock('../../client/default/socket.js', jest.fn()); + socket = require('../../client/socket'); // overlay - jest.setMock('../../client-src/default/overlay.js', { + jest.setMock('../../client/default/overlay.js', { clear: jest.fn(), showMessage: jest.fn(), }); - overlay = require('../../client-src/default/overlay'); + overlay = require('../../client/overlay'); // reloadApp - jest.setMock('../../client-src/default/utils/reloadApp.js', jest.fn()); - reloadApp = require('../../client-src/default/utils/reloadApp'); + jest.setMock('../../client/default/utils/reloadApp.js', jest.fn()); + reloadApp = require('../../client/utils/reloadApp'); // sendMessage - jest.setMock('../../client-src/default/utils/sendMessage.js', jest.fn()); - sendMessage = require('../../client-src/default/utils/sendMessage'); + jest.setMock('../../client/default/utils/sendMessage.js', jest.fn()); + sendMessage = require('../../client/utils/sendMessage'); // createSocketUrl jest.setMock( - '../../client-src/default/utils/createSocketUrl.js', + '../../client/default/utils/createSocketUrl.js', () => 'mock-url' ); - require('../../client-src/default'); + require('../../client/index'); onSocketMessage = socket.mock.calls[0][1]; }); diff --git a/test/client/overlay.test.js b/test/client/overlay.test.js index 0dbb32b7e5..cbd2ac54f2 100644 --- a/test/client/overlay.test.js +++ b/test/client/overlay.test.js @@ -1,6 +1,6 @@ 'use strict'; -const overlay = require('../../client-src/default/overlay'); +const overlay = require('../../client/overlay'); describe('overlay', () => { it('should run showMessage', () => { diff --git a/test/client/utils/createSocketUrl.test.js b/test/client/utils/createSocketUrl.test.js index 892e8204eb..2239afb84e 100644 --- a/test/client/utils/createSocketUrl.test.js +++ b/test/client/utils/createSocketUrl.test.js @@ -17,12 +17,12 @@ describe('createSocketUrl', () => { samples.forEach((url) => { jest.doMock( - '../../../client-src/default/utils/getCurrentScriptSource.js', + '../../../client/default/utils/getCurrentScriptSource.js', () => () => url ); // eslint-disable-next-line global-require - const createSocketUrl = require('../../../client-src/default/utils/createSocketUrl'); + const createSocketUrl = require('../../../client/utils/createSocketUrl'); test(`should return the url when __resourceQuery is ${url}`, () => { expect(createSocketUrl(url)).toMatchSnapshot(); diff --git a/test/client/utils/getCurrentScriptSource.test.js b/test/client/utils/getCurrentScriptSource.test.js index 8fb953b1f3..7cf389af3b 100644 --- a/test/client/utils/getCurrentScriptSource.test.js +++ b/test/client/utils/getCurrentScriptSource.test.js @@ -1,6 +1,6 @@ 'use strict'; -const getCurrentScriptSource = require('../../../client-src/default/utils/getCurrentScriptSource'); +const getCurrentScriptSource = require('../../../client/utils/getCurrentScriptSource'); describe('getCurrentScriptSource', () => { afterEach(() => { diff --git a/test/client/utils/log.test.js b/test/client/utils/log.test.js index 79021d13d7..7c5788d1f9 100644 --- a/test/client/utils/log.test.js +++ b/test/client/utils/log.test.js @@ -18,7 +18,7 @@ describe('log', () => { }); // eslint-disable-next-line global-require - setLogLevel = require('../../../client-src/default/utils/log').setLogLevel; + setLogLevel = require('../../../client/utils/log').setLogLevel; }); afterEach(() => { diff --git a/test/client/utils/reloadApp.test.js b/test/client/utils/reloadApp.test.js index 13a392b117..e6e172a268 100644 --- a/test/client/utils/reloadApp.test.js +++ b/test/client/utils/reloadApp.test.js @@ -25,7 +25,7 @@ describe('reloadApp', () => { }); // eslint-disable-next-line global-require - reloadApp = require('../../../client-src/default/utils/reloadApp'); + reloadApp = require('../../../client/utils/reloadApp'); }); afterEach(() => { diff --git a/test/client/utils/sendMessage.test.js b/test/client/utils/sendMessage.test.js index a60f2548bc..c9c74ebce2 100644 --- a/test/client/utils/sendMessage.test.js +++ b/test/client/utils/sendMessage.test.js @@ -2,7 +2,7 @@ /* global self */ -const sendMessage = require('../../../client-src/default/utils/sendMessage'); +const sendMessage = require('../../../client/utils/sendMessage'); describe('sendMessage', () => { afterEach(() => {