Skip to content

fix(client): default client fallback with redirection to all default directory files #2049

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions client-src/default-redirect/index.js
Original file line number Diff line number Diff line change
@@ -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 : ''
}`);
4 changes: 4 additions & 0 deletions client-src/default-redirect/overlay.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

// eslint-disable-next-line import/no-unresolved
module.exports = require(`./default/overlay`);
4 changes: 4 additions & 0 deletions client-src/default-redirect/socket.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

// eslint-disable-next-line import/no-unresolved
module.exports = require(`./default/socket`);
4 changes: 4 additions & 0 deletions client-src/default-redirect/utils/createSocketUrl.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

// eslint-disable-next-line import/no-unresolved
module.exports = require(`../default/utils/createSocketUrl`);
4 changes: 4 additions & 0 deletions client-src/default-redirect/utils/getCurrentScriptSource.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

// eslint-disable-next-line import/no-unresolved
module.exports = require(`../default/utils/getCurrentScriptSource`);
4 changes: 4 additions & 0 deletions client-src/default-redirect/utils/log.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

// eslint-disable-next-line import/no-unresolved
module.exports = require(`../default/utils/log`);
4 changes: 4 additions & 0 deletions client-src/default-redirect/utils/reloadApp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
'use strict';

// eslint-disable-next-line import/no-unresolved
module.exports = require(`../default/utils/reloadApp`);
8 changes: 8 additions & 0 deletions client-src/default-redirect/utils/sendMessage.js
Original file line number Diff line number Diff line change
@@ -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 : ''
}`);
6 changes: 1 addition & 5 deletions client-src/default/socket.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 0 additions & 10 deletions client-src/default/webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
'use strict';

const webpack = require('webpack');

module.exports = {
mode: 'production',
module: {
Expand All @@ -17,12 +15,4 @@ module.exports = {
},
],
},
plugins: [
new webpack.NormalModuleReplacementPlugin(/\/clients\//, (resource) => {
resource.request = resource.request.replace(
/\/clients\//,
'/../clients/'
);
}),
],
};
7 changes: 0 additions & 7 deletions client-src/live/webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict';

const path = require('path');
const webpack = require('webpack');
const CopyPlugin = require('copy-webpack-plugin');

module.exports = {
Expand Down Expand Up @@ -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/'
);
}),
],
};
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion test/client/clients/SockJSClient.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand Down
30 changes: 17 additions & 13 deletions test/client/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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];
});

Expand Down
2 changes: 1 addition & 1 deletion test/client/overlay.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

const overlay = require('../../client-src/default/overlay');
const overlay = require('../../client/overlay');

describe('overlay', () => {
it('should run showMessage', () => {
Expand Down
4 changes: 2 additions & 2 deletions test/client/utils/createSocketUrl.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 1 addition & 1 deletion test/client/utils/getCurrentScriptSource.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

const getCurrentScriptSource = require('../../../client-src/default/utils/getCurrentScriptSource');
const getCurrentScriptSource = require('../../../client/utils/getCurrentScriptSource');

describe('getCurrentScriptSource', () => {
afterEach(() => {
Expand Down
2 changes: 1 addition & 1 deletion test/client/utils/log.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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(() => {
Expand Down
2 changes: 1 addition & 1 deletion test/client/utils/reloadApp.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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(() => {
Expand Down
2 changes: 1 addition & 1 deletion test/client/utils/sendMessage.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/* global self */

const sendMessage = require('../../../client-src/default/utils/sendMessage');
const sendMessage = require('../../../client/utils/sendMessage');

describe('sendMessage', () => {
afterEach(() => {
Expand Down