Socket
Socket
Sign inDemoInstall

next-workbox

Package Overview
Dependencies
69
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.4.1 to 2.0.0

README.md

95

index.js

@@ -1,77 +0,74 @@

const {join} = require('path')
const {writeFileSync} = require('fs')
const findCacheDir = require('find-cache-dir')
const NextWorkboxWebpackPlugin = require('next-workbox-webpack-plugin')
const {registerScript} = require('./service-worker-register')
const { join } = require('path');
const { writeFileSync } = require('fs');
const findCacheDir = require('find-cache-dir');
const NextWorkboxWebpackPlugin = require('next-workbox-webpack-plugin');
const { registerScript } = require('./service-worker-register');
const defaultRegisterSW = {
src: '/static/workbox/sw.js',
scope: '../../'
}
src: '/sw.js',
scope: '/'
};
const appendRegisterSW = (entry, content) => {
const originalEntry = entry
const output = join(findCacheDir({name: 'next-workbox', create: true}), 'register-sw.js')
const withSWContent = (entry, content) => {
const originalEntry = entry;
const output = join(
findCacheDir({ name: 'next-workbox', create: true }),
'register-sw.js'
);
writeFileSync(output, content)
writeFileSync(output, content);
return async () => {
const entries = await originalEntry()
const entries = await originalEntry();
if (entries['main.js']) {
entries['main.js'].unshift(output)
entries['main.js'].unshift(output);
}
return entries
}
}
return entries;
};
};
module.exports = (nextConfig = {}) => {
return Object.assign({}, nextConfig, {
webpack(config, options) {
const {
isServer,
dev,
buildId,
defaultLoaders,
config: {
distDir
}
} = options
const {
isServer,
dev,
buildId,
config: { distDir }
} = options;
if (!defaultLoaders) {
throw new Error(
'This plugin is not compatible with Next.js versions below 5.0.0 https://err.sh/next-plugins/upgrade'
)
}
const { webpack, workbox = {} } = nextConfig;
const registerSW = workbox.registerSW || defaultRegisterSW;
const {webpack, workbox = {}} = nextConfig
if (!isServer && !dev) {
// append server-worker register script to main.js chunk
if (workbox.registerSW) {
const content = typeof workbox.registerSW === 'string' ?
workbox.registerSW : registerScript(defaultRegisterSW)
config.entry = appendRegisterSW(config.entry, content)
}
const content = typeof registerSW === 'string' ?
registerSW :
registerScript(registerSW);
config.entry = withSWContent(config.entry, content);
// cleanup params
delete workbox.registerSW
delete workbox.registerSW;
// push workbox webpack plugin
config.plugins.push(new NextWorkboxWebpackPlugin({
...workbox,
distDir,
buildId,
}))
config.plugins.push(
new NextWorkboxWebpackPlugin({
...workbox,
distDir,
buildId,
swDestRoot: `.next/static/${buildId}/pages`,
swURLRoot: `_next/static/${buildId}/pages`
})
);
}
if (typeof webpack === 'function') {
return webpack(config, options)
return webpack(config, options);
}
return config
return config;
}
})
}
});
};
{
"name": "next-workbox",
"version": "1.4.1",
"version": "2.0.0",
"description": "Next.js plugins for workbox and PWA",

@@ -10,7 +10,4 @@ "license": "MIT",

"email": "ragingwind@gmail.com",
"url": "https://ragingwind.me"
"url": "https://jimmymoon.dev"
},
"engines": {
"node": ">=4"
},
"scripts": {},

@@ -32,4 +29,4 @@ "files": [

"find-cache-dir": "^1.0.0",
"next-workbox-webpack-plugin": "1.1.0"
"next-workbox-webpack-plugin": "^2.1.1"
}
}
// Service Worker snippets from https://github.com/codebusking/vue-hn-pwa-guide-kit/tree/master/build
// all of comments was removed to convenience reason
const unregisterScript = (unregister) => `
const unregisterScript = unregister => `
if ('serviceWorker' in navigator) {

@@ -10,5 +10,5 @@ navigator.serviceWorker.ready.then(registration => {

})
}`
}`;
const registerScript = ({src, scope, onUpdate}) => `
const registerScript = ({ src, scope, onUpdate }) => `
const allowsSW = Boolean(window.location.protocol === 'https:' ||

@@ -47,6 +47,6 @@ window.location.hostname === 'localhost' ||

})
`
`;
module.exports = {
unregisterScript,
registerScript
}
};

@@ -1,13 +0,22 @@

const React = require('react')
const {unregisterScript, registerScript} = require('./service-worker-register')
const React = require('react');
const {
unregisterScript,
registerScript
} = require('./service-worker-register');
const ServiceWorker = ({src='/sw.js', scope='/', unregister = false, onUpdate = undefined}) => {
const ServiceWorker = ({
src = '/sw.js',
scope = '/',
unregister = false,
onUpdate = undefined
}) => {
return React.createElement('script', {
dangerouslySetInnerHTML: {
__html: unregister ? unregisterScript() : registerScript({src, scope, onUpdate})
}
})
}
dangerouslySetInnerHTML: {
__html: unregister
? unregisterScript()
: registerScript({ src, scope, onUpdate })
}
});
};
module.exports = ServiceWorker
module.exports = ServiceWorker;
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc