mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 02:35:49 +00:00
fix(sw) register when prefix changed
This commit is contained in:
parent
71c65d7354
commit
75f6fac284
5 changed files with 33 additions and 56 deletions
|
|
@ -11,7 +11,6 @@ const exec = require('execon');
|
|||
|
||||
const Images = require('./dom/images');
|
||||
const {
|
||||
registerSW,
|
||||
unregisterSW,
|
||||
} = require('./sw/register');
|
||||
|
||||
|
|
@ -46,8 +45,6 @@ function CloudCmdProto(Util, DOM) {
|
|||
console.log(str);
|
||||
};
|
||||
|
||||
registerSW();
|
||||
|
||||
Emitify.call(this);
|
||||
|
||||
const CloudCmd = this;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ require('../css/nojs.css');
|
|||
require('../css/columns/name-size-date.css');
|
||||
require('../css/columns/name-size.css');
|
||||
|
||||
const {
|
||||
registerSW,
|
||||
} = require('./sw/register');
|
||||
|
||||
// prevent additional loading of emitify
|
||||
window.Emitify = require('emitify/legacy');
|
||||
|
||||
|
|
@ -17,6 +21,8 @@ module.exports = window.CloudCmd = (config) => {
|
|||
|
||||
window.DOM = DOM;
|
||||
window.CloudCmd = require('./client');
|
||||
|
||||
registerSW(config.prefix);
|
||||
|
||||
const prefix = getPrefix(config.prefix);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
'use strict';
|
||||
|
||||
const runtime = require('serviceworker-webpack-plugin/lib/runtime');
|
||||
|
||||
module.exports.registerSW = registerSW;
|
||||
module.exports.unregisterSW = unregisterSW;
|
||||
|
||||
async function registerSW() {
|
||||
async function registerSW(prefix) {
|
||||
prefix = prefix ? `/${prefix}/` : `/`;
|
||||
if (!navigator.serviceWorker)
|
||||
return;
|
||||
|
||||
|
|
@ -15,7 +14,7 @@ async function registerSW() {
|
|||
if (!isHTTPS && !isLocalhost)
|
||||
return;
|
||||
|
||||
return runtime.register();
|
||||
return navigator.serviceWorker.register(`${prefix}sw.js`);
|
||||
}
|
||||
|
||||
async function unregisterSW() {
|
||||
|
|
|
|||
|
|
@ -4,27 +4,19 @@ const test = require('tape');
|
|||
const sinon = require('sinon');
|
||||
const mock = require('mock-require');
|
||||
|
||||
const SERVICE_WORKER = 'serviceworker-webpack-plugin/lib/runtime';
|
||||
|
||||
test('sw: register: registerSW: no serviceWorker', async (t) => {
|
||||
const {navigator} = global;
|
||||
global.navigator = {};
|
||||
|
||||
const register = sinon.stub();
|
||||
|
||||
mock(SERVICE_WORKER, {
|
||||
register
|
||||
});
|
||||
|
||||
const {
|
||||
registerSW,
|
||||
} = mock.reRequire('./register');
|
||||
|
||||
await registerSW();
|
||||
mock.stop(SERVICE_WORKER);
|
||||
|
||||
global.navigator = navigator;
|
||||
|
||||
t.notOk(register.called, 'should not call register');
|
||||
t.pass('should not call register');
|
||||
t.end();
|
||||
});
|
||||
|
||||
|
|
@ -34,28 +26,22 @@ test('sw: register: registerSW: no https', async (t) => {
|
|||
location,
|
||||
} = global;
|
||||
|
||||
global.navigator = {
|
||||
serviceWorker: true
|
||||
};
|
||||
const register = sinon.stub();
|
||||
|
||||
global.navigator = getNavigator({
|
||||
register,
|
||||
});
|
||||
|
||||
global.location = {
|
||||
protocol: 'http:'
|
||||
};
|
||||
|
||||
const register = sinon.stub();
|
||||
|
||||
mock(SERVICE_WORKER, {
|
||||
register
|
||||
});
|
||||
|
||||
const {
|
||||
registerSW,
|
||||
} = mock.reRequire('./register');
|
||||
|
||||
await registerSW();
|
||||
|
||||
mock.stop(SERVICE_WORKER);
|
||||
|
||||
global.location = location;
|
||||
global.navigator = navigator;
|
||||
|
||||
|
|
@ -69,10 +55,6 @@ test('sw: register: registerSW: no localhost', async (t) => {
|
|||
location,
|
||||
} = global;
|
||||
|
||||
global.navigator = {
|
||||
serviceWorker: true
|
||||
};
|
||||
|
||||
global.location = {
|
||||
protocol: 'http:',
|
||||
hostname: 'cloudcmd.io',
|
||||
|
|
@ -80,8 +62,8 @@ test('sw: register: registerSW: no localhost', async (t) => {
|
|||
|
||||
const register = sinon.stub();
|
||||
|
||||
mock(SERVICE_WORKER, {
|
||||
register
|
||||
global.navigator = getNavigator({
|
||||
register,
|
||||
});
|
||||
|
||||
const {
|
||||
|
|
@ -90,8 +72,6 @@ test('sw: register: registerSW: no localhost', async (t) => {
|
|||
|
||||
await registerSW();
|
||||
|
||||
mock.stop(SERVICE_WORKER);
|
||||
|
||||
global.location = location;
|
||||
global.navigator = navigator;
|
||||
|
||||
|
|
@ -105,18 +85,14 @@ test('sw: register: registerSW', async (t) => {
|
|||
location,
|
||||
} = global;
|
||||
|
||||
global.navigator = {
|
||||
serviceWorker: true
|
||||
};
|
||||
|
||||
global.location = {
|
||||
hostname: 'localhost',
|
||||
};
|
||||
|
||||
const register = sinon.stub();
|
||||
|
||||
mock(SERVICE_WORKER, {
|
||||
register
|
||||
global.navigator = getNavigator({
|
||||
register,
|
||||
});
|
||||
|
||||
const {
|
||||
|
|
@ -125,8 +101,6 @@ test('sw: register: registerSW', async (t) => {
|
|||
|
||||
await registerSW();
|
||||
|
||||
mock.stop(SERVICE_WORKER);
|
||||
|
||||
global.location = location;
|
||||
global.navigator = navigator;
|
||||
|
||||
|
|
@ -140,10 +114,6 @@ test('sw: register: unregisterSW', async (t) => {
|
|||
location,
|
||||
} = global;
|
||||
|
||||
global.navigator = {
|
||||
serviceWorker: true
|
||||
};
|
||||
|
||||
global.location = {
|
||||
hostname: 'localhost',
|
||||
};
|
||||
|
|
@ -155,8 +125,8 @@ test('sw: register: unregisterSW', async (t) => {
|
|||
const register = sinon.stub()
|
||||
.returns(Promise.resolve(reg));
|
||||
|
||||
mock(SERVICE_WORKER, {
|
||||
register
|
||||
global.navigator = getNavigator({
|
||||
register,
|
||||
});
|
||||
|
||||
const {
|
||||
|
|
@ -165,8 +135,6 @@ test('sw: register: unregisterSW', async (t) => {
|
|||
|
||||
await unregisterSW();
|
||||
|
||||
mock.stop(SERVICE_WORKER);
|
||||
|
||||
global.location = location;
|
||||
global.navigator = navigator;
|
||||
|
||||
|
|
@ -174,3 +142,14 @@ test('sw: register: unregisterSW', async (t) => {
|
|||
t.end();
|
||||
});
|
||||
|
||||
|
||||
function getNavigator({register, unregister}) {
|
||||
unregister = unregister || sinon.stub();
|
||||
|
||||
return {
|
||||
serviceWorker: {
|
||||
register,
|
||||
unregister,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -265,10 +265,6 @@ function _setUrl(pref, req, res, next) {
|
|||
|
||||
function _setSW(pref, req, res, next) {
|
||||
const prefix = getPrefix(pref);
|
||||
const is = !req.url.indexOf(prefix);
|
||||
|
||||
if (!is)
|
||||
return next();
|
||||
|
||||
const url = replacePrefix(req.url, prefix);
|
||||
const isSW = /^\/sw\.js(\.map)?$/.test(url);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue