Authored by 陈峰

pwa upgrade and fix some bugs

... ... @@ -12,7 +12,7 @@
{{#socialMediaList}}
<div class="party-icon-item">
<div class="public-info-section">
<img class="public-icon" src="{{imgSrc icon}}" />
<img class="public-icon" src="{{icon}}" />
<div class="personal">
<div class="public-name">{{name}}</div>
<div class="account-name {{#if required}}required{{/if}}" data-type="{{type}}">
... ...
const path = require('path');
const _ = require('lodash');
const request = require('request');
const config = global.yoho.config;
module.exports = {
sw(req, res) {
... ... @@ -7,8 +10,13 @@ module.exports = {
Pragma: 'no-cache',
Expires: (new Date(1900, 0, 1, 0, 0, 0, 0)).toUTCString()
});
res.sendFile(path.join(__dirname, '../../../public/static/sw.js'));
if (_.get(res, 'app.locals.devEnv')) {
return request({
url: `http:${config.assetUrl}${req.originalUrl.substring(1)}`
}).pipe(res);
} else {
return res.sendFile(path.join(__dirname, '../../../public/static/sw.js'));
}
},
manifest(req, res) {
res.sendFile(path.join(__dirname, '../../../public/static/manifest.json'));
... ...
const {InjectManifest} = require('workbox-webpack-plugin');
const path = require('path');
const isDev = process.env.NODE_ENV === 'dev' || !process.env.NODE_ENV;
const suffix = isDev ? 'dev' : 'prod';
module.exports = new InjectManifest({
importWorkboxFrom: 'disabled',
swSrc: path.join(__dirname, './sw.js'),
swDest: isDev ? 'sw.js' : path.join(__dirname, '../public/static/sw.js'),
chunks: ['index', 'page.common.offline.js', 'page.common.offline'],
importScripts: [
'https://cdn.yoho.cn/workbox/workbox-sw.js',
`https://cdn.yoho.cn/workbox/workbox-core.${suffix}.js`,
`https://cdn.yoho.cn/workbox/workbox-precaching.${suffix}.js`,
`https://cdn.yoho.cn/workbox/workbox-routing.${suffix}.js`,
`https://cdn.yoho.cn/workbox/workbox-cache-expiration.${suffix}.js`]
});
... ...
/* eslint-env worker */
/* global FetchEvent */
self.workbox.skipWaiting();
self.workbox.clientsClaim();
const isDev = self.location.search.indexOf('dev') >= 0;
const staticDomian = isDev ? /^http:\/\/localhost:5001/i : /^https:\/\/(.*)cdn\.yoho\.cn/i;
const webDomian = isDev ? /^http:\/\/localhost:6001/i : /^https:\/\/m.yohobuy.com/;
const precaches = [
{
url: '/offline.html',
rivision: 'offline-rivision-0.0.1'
},
{
url: '//cdn.yoho.cn/pwa/404.png',
rivision: '404-rivision-0.0.1'
}].concat(self.__precacheManifest || []);
self.workbox.precaching.precacheAndRoute(precaches);
/**
* 需要缓存的路径
*/
const CACHED_PATH = [
'boys',
'girls',
'kids',
'lifestyle',
'cate',
'list',
'search',
'product',
'shop',
'guang',
'offline.html'
];
// 自定义缓存
self.workbox.routing.registerRoute(args => {
if (/sockjs-node\/info/.test(args.url.href)) {
return false;
}
if (self.__precacheManifest.find(precahce => args.url.href.indexOf(precahce.url) >= 0)) {
return false;
}
if (staticDomian.test(args.url.href)) {
return true;
}
return false;
}, self.workbox.strategies.staleWhileRevalidate({
cacheName: 'statics',
plugins: [
new self.workbox.expiration.Plugin({
maxEntries: 1000,
maxAgeSeconds: 7 * 24 * 60 * 60 // 7 day
})
]
}));
// 所有网络走 worker,异常时增加离线页面
self.workbox.routing.registerRoute(args => {
let routeRegExp = new RegExp(`^\/(${CACHED_PATH.join('|')})`);
if (webDomian.test(args.url.href) &&
(routeRegExp.test(args.url.pathname) ||
args.url.pathname === '/')) {
return true;
}
if (args.event.request.headers.get('x-requested-with') === 'XMLHttpRequest') {
return false;
}
return false;
}, args => {
return self.workbox.strategies.networkFirst({
cacheName: 'page',
cacheExpiration: {
maxEntries: 300,
maxAgeSeconds: 12 * 60 * 60 // 12 小时
}
}).handle(args).then(res => {
if (res || args.event.request.mode !== 'navigate') {
return res;
}
// navigate 请求失败后,返回网络异常页面
return caches.match('offline.html');
});
});
/**
* webp 处理
* 匹配非 webp 的 cdn 图片资源,缓存其 webp 格式
*/
self.workbox.routing.registerRoute(args => {
let useWebp = false;
let supportWebp = /image\/webp/i.test(args.event.request.headers.get('Accept'));
if (!supportWebp) {
return useWebp;
}
if (/^https?:\/\/(.*)static\.yhbimg\.com(.*)(png|jpg|jpeg)\?(imageView|imageMogr)(.*)/.test(args.url.href) &&
/^(?!.*format\/).*/.test(args.url.href)) {
useWebp = true;
}
return useWebp;
}, args => {
// 重新构造 fetch 请求
args.event = new FetchEvent(args.event.type, {
request: new Request(args.event.request.url + '/format/webp'),
clientId: args.event.clientId,
isReload: args.event.isReload
});
return self.workbox.strategies.networkOnly().handle(args);
});
... ...
... ... @@ -2,6 +2,7 @@ const yo = require('yo-cli');
const webpack = require('webpack');
const path = require('path');
const config = require('../config/common');
const swPlugin = require('./sw.config');
module.exports = yo()
.entry('./public/app.js')
... ... @@ -59,6 +60,7 @@ module.exports = yo()
})
.merge({
plugins: [
swPlugin,
new webpack.ProvidePlugin({
$: 'yoho-jquery',
jQuery: 'yoho-jquery',
... ... @@ -67,8 +69,8 @@ module.exports = yo()
],
module: {
rules: [{
test: /yoho\.entry\.js/,
loader: path.resolve(__dirname, './yoho-entry-loader'),
test: /yoho\.pages\.js/,
loader: path.resolve(__dirname, './yoho-pages-loader'),
}]
}
});
... ...
const shelljs = require('shelljs');
const _ = require('lodash');
const path = require('path');
const fs = require('fs');
module.exports = function(source) {
let transforSource = '';
const options = eval(source); //eslint-disable-line
transforSource += _.join(_.map(options.common, common => `import '${common}';`), '\r\n');
const pageTpl = fs.readFileSync(path.join(__dirname, './yoho-pages-template.tpl'), 'utf-8');
// transforSource += `
// window.loadStatic = (name) => {
// window.pageJsRoute = (name) => {
// switch (name) {
// case 'product.new-detail':
// return import(/* webpackChunkName: "page.product.new-detail" */ './js/product/new-detail.page.js')
// case 'common.offline':
// return import(/* webpackChunkName: "page.common.offline" */ './js/common/offline.page.js')
// }
// }`;
transforSource += `
window.loadStatic = (name) => {
switch (name) {${
_.join(_.map(options.page.regx, regx => {
return _.join(_.map(shelljs.ls(path.join(this.context, options.page.context, regx)), file => {
transforSource += _.join(_.map(options.regx, regx => {
return _.join(_.map(shelljs.ls(path.join(this.context, options.context, regx)), file => {
const dir = _.slice(file.split('/'), -3);
let moduleName, pageName;
... ... @@ -35,16 +33,9 @@ window.loadStatic = (name) => {
case '${moduleName}.${pageName}':
return import(/* webpackChunkName: "page.${moduleName}.${pageName}" */ './${path.relative(this.context, file)}');`; //eslint-disable-line
}), '');
}), '')
}
${
_.join(_.map(options.dll, (stat, dll) => {
return `
case '${dll}':
return import(/* webpackChunkName: "${dll}" */ '${stat}');`;
}))
}
}
}`;
}), '');
transforSource = pageTpl.replace('##placeholder##', transforSource);
return transforSource;
};
... ...
const removeScript = () => {
document.querySelector('#pageJsRoute').remove();
}
window.pageJsRoute = (pageName) => {
switch (pageName) {
##placeholder##
}
removeScript();
};
... ...
... ... @@ -13,10 +13,10 @@ const isTest = process.env.NODE_ENV === 'test3';
const domains = {
// api: 'http://api.yoho.cn/',
// service: 'http://service.yoho.cn/',
// liveApi: 'http://testapi.live.yohops.com:9999/',
// singleApi: 'http://api-test3.yohops.com:9999/',
api: 'http://api.yoho.cn/',
service: 'http://service.yoho.cn/',
liveApi: 'http://testapi.live.yohops.com:9999/',
singleApi: 'http://api-test3.yohops.com:9999/',
// gray
// api: 'http://apigray.yoho.cn/',
... ... @@ -24,13 +24,13 @@ const domains = {
// platformApi: 'http://172.16.6.210:8088/',
api: 'http://api-test3.dev.yohocorp.com/',
service: 'http://api-test3.dev.yohocorp.com/',
liveApi: 'http://testapi.live.yohops.com:9999/',
singleApi: 'http://api-test3.dev.yohocorp.com/',
// api: 'http://api-test3.dev.yohocorp.com/',
// service: 'http://api-test3.dev.yohocorp.com/',
// liveApi: 'http://testapi.live.yohops.com:9999/',
// singleApi: 'http://api-test3.dev.yohocorp.com/',
imSocket: 'ws://socket.yohobuy.com:10240',
imCs: 'http://im.yohobuy.com/api',
imSocket: 'wss://imsocket.yohobuy.com:443',
imCs: 'https://imhttp.yohobuy.com/api',
global: 'http://api-global.yohobuy.com',
store: 'http://192.168.102.47:8080/portal-gateway/',
... ... @@ -45,7 +45,7 @@ module.exports = {
appName: 'yohobuywap-node',
port: 6001,
siteUrl: '//m.yohobuy.com',
assetUrl: '//127.0.0.1:5001/yohobuywap-node/',
assetUrl: '//localhost:5001/yohobuywap-node/',
testCode: 'yoho4946abcdef#$%&!@',
domains: domains,
... ...
... ... @@ -102,25 +102,14 @@
{{#statics.javascripts}}
<script src="{{.}}" crossorigin="anonymous"></script>
{{/statics.javascripts}}
<script>
loadStatic('{{statics.name}}');
<script id="pageJsRoute">
pageJsRoute('{{statics.name}}');
</script>
{{#if devEnv}}
<script>
var STATIC_RESOURCE_HASH = '{{startTime}}';
var STATIC_RESOURCE_PATH = '//{{devHost}}:{{port}}';
</script>
{{^}}
<script>
var STATIC_RESOURCE_HASH = '{{startTime}}';
var STATIC_RESOURCE_PATH = '//cdn.yoho.cn/yohobuywap-node/{{version}}';
</script>
{{/if}}
{{#loadJs}}
<script src="{{src}}"></script>
<script src="{{src}}"></script>
{{/loadJs}}
{{#unless devEnv}}
{{> analysis}}
{{> analysis}}
{{/unless}}
</body>
</html>
... ...
... ... @@ -131,6 +131,7 @@
"webpack": "^4.16.5",
"whatwg-fetch": "^2.0.4",
"workbox-sw": "^2.1.2",
"workbox-webpack-plugin": "^3.4.1",
"yo-cli": "^2.1.6",
"yoho-cookie": "^1.2.0",
"yoho-fastclick": "^1.0.6",
... ...
import './js/common';
import './js/global';
import './scss/common.scss';
import './yoho.entry';
import './yoho.pages';
window.justGenerate = () => {
import(/* webpackChunkName: "index" */ './scss/index.scss');
};
... ...
... ... @@ -17,7 +17,7 @@ var prefixes = 'webkit moz ms o'.split(' '); //各浏览器前缀
var requestAnimationFrame = window.requestAnimationFrame;
var cancelAnimationFrame = window.cancelAnimationFrame;
var site_url = STATIC_RESOURCE_PATH;
var site_url = '//cdn.yoho.cn/yohobuywap-node/6.6.28';
var $btn_play;
var video_width = 375;
var video_height = 667;
... ...
module.exports = function(path) {
return window.STATIC_RESOURCE_PATH + path;
};
... ... @@ -23,8 +23,7 @@ let debounceFn = debounce(function(cardNo, formModel) {
// 设置银行图标
$('#bank-icon').show().attr('src',
window.STATIC_RESOURCE_PATH +
'/img/home/bank-icons/' + result.data.bankCode + '.png');
'//cdn.yoho.cn/yohobuywap-node/6.6.28/img/home/bank-icons/' + result.data.bankCode + '.png');
$('#bank-desc').show();
}
... ...
import $ from 'yoho-jquery';
import yoho from 'js/yoho-app';
const isHttps = location.protocol === 'https:';
const canUse = location.protocol === 'https:' || location.hostname === 'localhost';
const isDev = process.env.NODE_ENV === 'development' || !process.env.NODE_ENV;
function register() {
const t = window.STATIC_RESOURCE_HASH || '';
const staticServer = window.STATIC_RESOURCE_PATH || '';
if (navigator && navigator.serviceWorker && navigator.serviceWorker.register) {
navigator.serviceWorker.register(`/sw.js?t=${t}&staticServer=${staticServer}`, {
scope: '/'
}).then(() => {
if (canUse && navigator && navigator.serviceWorker && navigator.serviceWorker.register) {
navigator.serviceWorker.register(`/sw.js${isDev ? '?dev' : ''}`).then(() => {
if (window._hmt && window._hmt.push) {
window._hmt.push(['_trackEvent', 'SW registered', 'SUCCESS',
document.title, location.href]);
}
}).catch(err => {
console.error(err);
if (window._hmt && window._hmt.push) {
window._hmt.push(['_trackEvent', 'SW registered', 'FAILED',
document.title, JSON.stringify(err)]);
... ... @@ -25,7 +22,7 @@ function register() {
}
function unregister() {
if (isHttps && navigator && navigator.serviceWorker && navigator.serviceWorker.getRegistrations) {
if (canUse && navigator && navigator.serviceWorker && navigator.serviceWorker.getRegistrations) {
navigator.serviceWorker.getRegistrations().then(registrations => {
for (let registration of registrations) {
registration.unregister().then(() => {
... ... @@ -47,13 +44,13 @@ function unregister() {
window.addEventListener('load', function() {
// Android WebView 中 UserAgent 不正确
if (!yoho.isApp && !(yoho.isAndroid && yoho.isWechat)) {
if ('serviceWorker' in navigator && isHttps) {
if ('serviceWorker' in navigator) {
$.ajax({
url: '//m.yohobuy.com/api/switch',
dataType: 'jsonp',
cache: false,
success(res) {
const usePwa = isHttps && res && res.usePwa;
const usePwa = res && res.usePwa;
if (usePwa) {
register();
... ...
... ... @@ -530,7 +530,7 @@ let chat = {
$div.find('img[yohotype=emo]')
.attr('src', function(i, val) {
return window.STATIC_RESOURCE_PATH + '/img/service/emoji/' + val;
return '//cdn.yoho.cn/yohobuywap-node/6.6.28/img/service/emoji/' + val;
});
return $div.html();
... ...
... ... @@ -9,7 +9,7 @@
let config = {
servers: [gDomains.imSocket],
defaultUserHead: '//img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif',
rebotUserHead: `${window.STATIC_RESOURCE_PATH}/img/service/chat/im-robot.png`,
rebotUserHead: '//cdn.yoho.cn/yohobuywap-node/6.6.28/img/service/chat/im-robot.png',
employeHead: '//img12.static.yhbimg.com/imserver/2016/11/17/11/02bc3c3de856432175c01d937342a1f2ce.jpg',
recType: {
ENTER: 1, // 用户进入
... ...
module.exports = {
common: ['./js/common', './js/global', './scss/common.scss'],
page: {
context: './js',
regx: ['**/*.page.js', '**/index.js']
},
dll: {
index: './scss/index.scss'
}
context: './js',
regx: ['**/*.page.js', '**/index.js']
};
... ...
... ... @@ -2010,6 +2010,10 @@ commander@~2.16.0:
version "2.16.0"
resolved "http://npm.yohops.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
common-tags@^1.4.0:
version "1.8.0"
resolved "http://npm.yohops.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
commondir@^1.0.1:
version "1.0.1"
resolved "http://npm.yohops.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
... ... @@ -3672,6 +3676,14 @@ fs-extra@^1.0.0:
jsonfile "^2.1.0"
klaw "^1.0.0"
fs-extra@^4.0.2:
version "4.0.3"
resolved "http://npm.yohops.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^1.2.5:
version "1.2.5"
resolved "http://npm.yohops.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
... ... @@ -4084,6 +4096,10 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
hoek@4.x.x:
version "4.2.1"
resolved "http://npm.yohops.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
home-or-tmp@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
... ... @@ -4763,6 +4779,12 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
isemail@3.x.x:
version "3.1.3"
resolved "http://npm.yohops.com/isemail/-/isemail-3.1.3.tgz#64f37fc113579ea12523165c3ebe3a71a56ce571"
dependencies:
punycode "2.x.x"
isexe@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
... ... @@ -4810,6 +4832,14 @@ jest-validate@^23.5.0:
leven "^2.1.0"
pretty-format "^23.5.0"
joi@^11.1.1:
version "11.4.0"
resolved "http://npm.yohops.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb"
dependencies:
hoek "4.x.x"
isemail "3.x.x"
topo "2.x.x"
jpeg-js@0.0.4:
version "0.0.4"
resolved "http://npm.yohops.com/jpeg-js/-/jpeg-js-0.0.4.tgz#06aaf47efec7af0b1924a59cd695a6d2b5ed870e"
... ... @@ -4891,6 +4921,12 @@ json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "http://npm.yohops.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "http://npm.yohops.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
dependencies:
jsonify "~0.0.0"
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "http://npm.yohops.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
... ... @@ -4909,6 +4945,16 @@ jsonfile@^2.1.0:
optionalDependencies:
graceful-fs "^4.1.6"
jsonfile@^4.0.0:
version "4.0.0"
resolved "http://npm.yohops.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
optionalDependencies:
graceful-fs "^4.1.6"
jsonify@~0.0.0:
version "0.0.0"
resolved "http://npm.yohops.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
jsprim@^1.2.2:
version "1.4.1"
resolved "http://npm.yohops.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
... ... @@ -5202,6 +5248,10 @@ lodash._isiterateecall@^3.0.0:
version "3.0.9"
resolved "http://npm.yohops.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
lodash._reinterpolate@~3.0.0:
version "3.0.0"
resolved "http://npm.yohops.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
lodash._topath@^3.0.0:
version "3.8.1"
resolved "http://npm.yohops.com/lodash._topath/-/lodash._topath-3.8.1.tgz#3ec5e2606014f4cb97f755fe6914edd8bfc00eac"
... ... @@ -5354,6 +5404,19 @@ lodash.tail@^4.1.1:
version "4.1.1"
resolved "http://npm.yohops.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
lodash.template@^4.4.0:
version "4.4.0"
resolved "http://npm.yohops.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
dependencies:
lodash._reinterpolate "~3.0.0"
lodash.templatesettings "^4.0.0"
lodash.templatesettings@^4.0.0:
version "4.1.0"
resolved "http://npm.yohops.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
dependencies:
lodash._reinterpolate "~3.0.0"
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "http://npm.yohops.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
... ... @@ -7256,6 +7319,10 @@ prettier@1.13.7:
version "1.13.7"
resolved "http://npm.yohops.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281"
pretty-bytes@^4.0.2:
version "4.0.2"
resolved "http://npm.yohops.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
pretty-error@^2.0.2:
version "2.1.1"
resolved "http://npm.yohops.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
... ... @@ -7386,14 +7453,14 @@ punycode@1.3.2:
version "1.3.2"
resolved "http://npm.yohops.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
punycode@2.x.x, punycode@^2.1.0:
version "2.1.1"
resolved "http://npm.yohops.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "http://npm.yohops.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@^2.1.0:
version "2.1.1"
resolved "http://npm.yohops.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
q@^1.1.2:
version "1.5.1"
resolved "http://npm.yohops.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
... ... @@ -9061,6 +9128,12 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
topo@2.x.x:
version "2.0.2"
resolved "http://npm.yohops.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182"
dependencies:
hoek "4.x.x"
toposort@^1.0.0:
version "1.0.7"
resolved "http://npm.yohops.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
... ... @@ -9312,6 +9385,10 @@ unist-util-visit@^1.1.0:
dependencies:
unist-util-visit-parents "^2.0.0"
universalify@^0.1.0:
version "0.1.2"
resolved "http://npm.yohops.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
... ... @@ -9862,10 +9939,119 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "http://npm.yohops.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
workbox-background-sync@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-background-sync/-/workbox-background-sync-3.4.1.tgz#6957a0ff622ee08b7af958d561cf2d4821edb640"
dependencies:
workbox-core "^3.4.1"
workbox-broadcast-cache-update@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.4.1.tgz#9861cd2b6d874d41be26a34bc5bdd7a794d3badf"
dependencies:
workbox-core "^3.4.1"
workbox-build@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-build/-/workbox-build-3.4.1.tgz#65af4c81b05dac6a1819c88b8a2a944ddf5cec04"
dependencies:
babel-runtime "^6.26.0"
common-tags "^1.4.0"
fs-extra "^4.0.2"
glob "^7.1.2"
joi "^11.1.1"
lodash.template "^4.4.0"
pretty-bytes "^4.0.2"
workbox-background-sync "^3.4.1"
workbox-broadcast-cache-update "^3.4.1"
workbox-cache-expiration "^3.4.1"
workbox-cacheable-response "^3.4.1"
workbox-core "^3.4.1"
workbox-google-analytics "^3.4.1"
workbox-navigation-preload "^3.4.1"
workbox-precaching "^3.4.1"
workbox-range-requests "^3.4.1"
workbox-routing "^3.4.1"
workbox-strategies "^3.4.1"
workbox-streams "^3.4.1"
workbox-sw "^3.4.1"
workbox-cache-expiration@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-cache-expiration/-/workbox-cache-expiration-3.4.1.tgz#6c92317ca43be7e3030662ffbb3fd413c1689f18"
dependencies:
workbox-core "^3.4.1"
workbox-cacheable-response@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-cacheable-response/-/workbox-cacheable-response-3.4.1.tgz#5517b4d5a86c2ad5d48000109335c5af23f47e40"
dependencies:
workbox-core "^3.4.1"
workbox-core@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-core/-/workbox-core-3.4.1.tgz#dd6d8ad7398a0e6224c04b079841045af0c62e1f"
workbox-google-analytics@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-google-analytics/-/workbox-google-analytics-3.4.1.tgz#98f407b7d157be68087e0f3edb432cba291fd614"
dependencies:
workbox-background-sync "^3.4.1"
workbox-core "^3.4.1"
workbox-routing "^3.4.1"
workbox-strategies "^3.4.1"
workbox-navigation-preload@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-navigation-preload/-/workbox-navigation-preload-3.4.1.tgz#d3eb75239cc4eed9314b25e233da2ba282dcc84d"
dependencies:
workbox-core "^3.4.1"
workbox-precaching@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-precaching/-/workbox-precaching-3.4.1.tgz#2d4a3f6ae8d825e17ef51dddc51aae5ef2876fb5"
dependencies:
workbox-core "^3.4.1"
workbox-range-requests@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-range-requests/-/workbox-range-requests-3.4.1.tgz#098474efecce49148ba925c75753e0ac96a8dd9a"
dependencies:
workbox-core "^3.4.1"
workbox-routing@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-routing/-/workbox-routing-3.4.1.tgz#c5ac213480869da29a91a88db57b679ba7ddf58a"
dependencies:
workbox-core "^3.4.1"
workbox-strategies@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-strategies/-/workbox-strategies-3.4.1.tgz#96f7947a9611ea599fcb71d44a5abab503fbe288"
dependencies:
workbox-core "^3.4.1"
workbox-streams@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-streams/-/workbox-streams-3.4.1.tgz#b639843431ea38825909a557e54108fdc469f0eb"
dependencies:
workbox-core "^3.4.1"
workbox-sw@^2.1.2:
version "2.1.3"
resolved "http://npm.yohops.com/workbox-sw/-/workbox-sw-2.1.3.tgz#4045560dc26ada7a41fe37999a93c71c43e41d6a"
workbox-sw@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-sw/-/workbox-sw-3.4.1.tgz#7b51fc14c44b4e880c369f97681472cf6e117113"
workbox-webpack-plugin@^3.4.1:
version "3.4.1"
resolved "http://npm.yohops.com/workbox-webpack-plugin/-/workbox-webpack-plugin-3.4.1.tgz#e91a4ab1e427b7d46afb7c185e99ca172e306d26"
dependencies:
json-stable-stringify "^1.0.1"
workbox-build "^3.4.1"
worker-farm@^1.5.2:
version "1.6.0"
resolved "http://npm.yohops.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
... ... @@ -10192,15 +10378,9 @@ yoho-md5@^2.0.0:
version "2.1.0"
resolved "http://npm.yohops.com/yoho-md5/-/yoho-md5-2.1.0.tgz#f0c00d343f775e77952ebce0826863ac52e0ad50"
<<<<<<< HEAD
yoho-node-lib@=0.6.24:
version "0.6.24"
resolved "http://npm.yohops.com/yoho-node-lib/-/yoho-node-lib-0.6.24.tgz#3fbf5151da67d8848c4bb66daa3b92ba9051d5cb"
=======
yoho-node-lib@=0.6.23:
version "0.6.23"
resolved "http://npm.yohops.com/yoho-node-lib/-/yoho-node-lib-0.6.23.tgz#7ad4b550c3c66deb860bc6f7b1b7d9598ca89297"
>>>>>>> feature/docker
dependencies:
dnscache "^1.0.1"
handlebars "^4.0.5"
... ...