Compare commits

..

18 Commits

Author SHA1 Message Date
github-actions[bot]
c7261aa2b0 Version Packages 2021-05-04 21:26:53 +02:00
Thomas Allmer
690075d335 chore: fix typo on service worker page 2021-05-04 07:19:47 +02:00
Thomas Allmer
2724f073fc feat: adopt a service worker flow with more control 2021-05-04 06:55:33 +02:00
github-actions[bot]
d08692c7f3 Version Packages 2021-04-29 12:35:04 +02:00
Thomas Allmer
2b7f1ee719 fix: support pathprefix in cli, launch, mdjs, search 2021-04-29 12:30:47 +02:00
github-actions[bot]
3802778be4 Version Packages 2021-04-29 08:30:57 +02:00
Thomas Allmer
26f4a1ebff chore: align versions 2021-04-29 00:35:26 +02:00
Thomas Allmer
81edf45fe2 fix: drastically reduce the amount of js files in build output 2021-04-29 00:35:26 +02:00
github-actions[bot]
c5a1d7e8d1 Version Packages 2021-04-24 17:12:15 +02:00
Thomas Allmer
74dd8d1bcc fix(mdjs-preview): autoheight will not grow bigger than the current size height 2021-04-24 17:05:20 +02:00
Thomas Allmer
72f631ac86 chore: add releases 2021-04-23 13:06:44 +02:00
Thomas Allmer
fafb99b0fa feat(mdjs-preview): add a copy code button 2021-04-23 13:06:44 +02:00
Thomas Allmer
f5769b9aa9 fix(mdjs-preview): improve customization capabilities 2021-04-23 13:06:44 +02:00
Konstantinos Norgias
12d9cc3b44 fix: configure simulator themes & platforms 2021-04-23 11:37:34 +02:00
Konstantinos Norgias
ef9b373aa1 style: add color theming with css custom props 2021-04-23 11:37:34 +02:00
Konstantinos Norgias
560234d663 fix: default no render empty themes and platforms 2021-04-23 11:37:34 +02:00
Konstantinos Norgias
024514e901 style: add simulator css vars 2021-04-23 11:37:34 +02:00
Mathieu Puech
66c2d781e6 fix: windows path issue when using rocket lint 2021-04-23 11:18:53 +02:00
52 changed files with 590 additions and 491 deletions

View File

@@ -0,0 +1,45 @@
# Configuration >> Service Worker ||30
Rocket does come with a default service worker that will
- cache already visited pages
- cache assets of visited pages (up to 100 files then it replaces older entries)
- reload the page if a newer html page version is available on service worker activation
## Adjusting the file name
Changing the service worker file name can be quite a hassle so you can adjust generate file name via a config.
👉 `rocket.config.js`
```js
export default {
serviceWorkerName: 'my-service-worker-name.js',
};
```
## Meet the Service Worker
The default service worker will work for many scenarios however your needs my vary.
To enable different service worker strategies you can replace the default service worker code by providing a file at `_assets/service-worker.js`.
This file will be auto transformed and generated in the root of the website using the defined `serviceWorkerName`.
For inspiration, you can take a look at the default config.
[https://github.com/modernweb-dev/rocket/blob/main/packages/cli/preset/\_assets/service-worker.js](https://github.com/modernweb-dev/rocket/blob/main/packages/cli/preset/_assets/service-worker.js)
Be sure to check out [workbox](https://developers.google.com/web/tools/workbox) for more service worker magic.
And if you wanna have a 30 minutes crash course we highly recommend the talk [Service Workers For The Rest Of Us](https://vimeo.com/362260166) by [Philip Walton](https://twitter.com/philwalton).
## Registration
The registration happens via another file that you can also overwrite at `_assets/scripts/registerServiceWorker.js`.
Below you find the default implementation.
<!-- prettier-ignore-start -->
```js
{{ '/_assets/scripts/registerServiceWorker.js' | asset | toAbsPath | inlineFilePath; }}
```
<!-- prettier-ignore-end -->

View File

@@ -111,7 +111,7 @@ We can simulate the following settings
<html theme="dark"></html>
```
3. `language`
Best to relay on `data-lang` and `lang` often gets changes by translations services which may interfere with you translation loading system.
Best to relay on `data-lang` as `lang` often gets changes by translations services which may interfere with your translation loading system.
```html
<html lang="en-US" data-lang="en-US"></html>
<html lang="de-DE" data-lang="de-DE"></html>

View File

@@ -8,7 +8,6 @@ You write modern JavaScript using the latest browser features. Rollup will optim
- Set HTML or JavaScript as input and/or output
- Optimized for browsers which support modules
- Loads polyfills using feature detection
- Generates a service worker
- Minifies JavaScript
- Minifies lit-html templates

View File

@@ -5,7 +5,7 @@ For that reason Rocket creates those automatically with the title, parent title,
It will look like this but with your logo:
<img src="{{ socialMediaImage }}" width="1200" height="630" alt="Social Media Image of this page" style="border: 1px solid #000" />
<img src="{{ socialMediaImage | url }}" width="1200" height="630" alt="Social Media Image of this page" style="border: 1px solid #000" />
There are multiple ways you can modify it.

View File

@@ -1,5 +1,11 @@
# @rocket/building-rollup
## 0.3.0
### Minor Changes
- 2724f07: Stop auto generating a service worker from a template. Setup your own and then bundle via `createServiceWorkerConfig`.
## 0.2.0
### Minor Changes

View File

@@ -6,3 +6,7 @@
export { createBasicConfig, createBasicMetaConfig } from './src/createBasicConfig.js';
export { createSpaConfig, createSpaMetaConfig } from './src/createSpaConfig.js';
export { createMpaConfig, createMpaMetaConfig } from './src/createMpaConfig.js';
export {
createServiceWorkerConfig,
createServiceWorkerMetaConfig,
} from './src/createServiceWorkerConfig.js';

View File

@@ -1,6 +1,6 @@
{
"name": "@rocket/building-rollup",
"version": "0.2.0",
"version": "0.3.0",
"publishConfig": {
"access": "public"
},
@@ -55,11 +55,16 @@
"@babel/preset-env": "^7.12.11",
"@rollup/plugin-babel": "^5.2.2",
"@rollup/plugin-node-resolve": "^11.0.1",
"@rollup/plugin-replace": "^2.4.2",
"@web/rollup-plugin-html": "^1.6.0",
"@web/rollup-plugin-import-meta-assets": "^1.0.4",
"@web/rollup-plugin-polyfills-loader": "^1.1.0",
"browserslist": "^4.16.1",
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-workbox": "^6.1.0"
"workbox-broadcast-update": "^6.1.5",
"workbox-cacheable-response": "^6.1.5",
"workbox-expiration": "^6.1.5",
"workbox-routing": "^6.1.5",
"workbox-strategies": "^6.1.5"
}
}

View File

@@ -15,10 +15,6 @@ export function createMpaMetaConfig(userConfig = { output: {}, setupPlugins: []
adjustPluginOptions('html', {
flattenOutput: false,
}),
adjustPluginOptions('workbox', config => {
delete config.navigateFallback;
return config;
}),
...config.setupPlugins,
];

View File

@@ -0,0 +1,91 @@
import resolve from '@rollup/plugin-node-resolve';
import { terser } from 'rollup-plugin-terser';
import babelPkg from '@rollup/plugin-babel';
import replace from '@rollup/plugin-replace';
import { metaConfigToRollupConfig } from 'plugins-manager';
const { babel } = babelPkg;
export function createServiceWorkerConfig(userConfig) {
const { config, metaPlugins } = createServiceWorkerMetaConfig(userConfig);
return metaConfigToRollupConfig(config, metaPlugins);
}
export function createServiceWorkerMetaConfig(userConfig = { output: {} }) {
const developmentMode =
typeof userConfig.developmentMode !== undefined
? userConfig.developmentMode
: !!process.env.ROLLUP_WATCH;
delete userConfig.developmentMode;
const config = {
treeshake: !developmentMode,
setupPlugins: [],
...userConfig,
output: {
format: 'iife',
file: 'service-worker.js',
...userConfig.output,
},
};
let metaPlugins = [
{
name: 'node-resolve',
plugin: resolve,
options: {
moduleDirectories: ['node_modules', 'web_modules'],
},
},
{
name: 'replace',
plugin: replace,
options: {
'process.env.NODE_ENV': JSON.stringify(developmentMode ? 'development' : 'production'),
},
},
{
name: 'babel',
plugin: babel,
options: {
babelHelpers: 'bundled',
compact: true,
presets: [
[
'@babel/preset-env',
{
targets: [
'last 3 Chrome major versions',
'last 3 ChromeAndroid major versions',
'last 3 Firefox major versions',
'last 3 Edge major versions',
'last 3 Safari major versions',
'last 3 iOS major versions',
],
useBuiltIns: false,
shippedProposals: true,
modules: false,
bugfixes: true,
},
],
],
},
},
{
name: 'terser',
plugin: terser,
options: {
mangle: {
toplevel: true,
properties: {
regex: /(^_|_$)/,
},
},
},
},
];
return { config, metaPlugins, developmentMode };
}

View File

@@ -1,6 +1,4 @@
import path from 'path';
import { rollupPluginHTML } from '@web/rollup-plugin-html';
import { generateSW } from 'rollup-plugin-workbox';
import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets';
import { polyfillsLoader } from '@web/rollup-plugin-polyfills-loader';
import { metaConfigToRollupConfig } from 'plugins-manager';
@@ -37,31 +35,6 @@ export function createSpaMetaConfig(userConfig = { output: {} }) {
options: {
rootDir,
absoluteBaseUrl,
injectServiceWorker: true,
serviceWorkerPath: path.join(config.output.dir, 'service-worker.js'),
},
},
{
name: 'workbox',
plugin: generateSW,
options: {
// Keep 'legacy-*.js' just for retro compatibility
globIgnores: ['polyfills/*.js', 'legacy-*.js', 'nomodule-*.js'],
navigateFallback: '/index.html',
// where to output the generated sw
swDest: path.join(config.output.dir, 'service-worker.js'),
// directory to match patterns against to be precached
globDirectory: path.join(config.output.dir),
// cache any html js and css by default
globPatterns: ['**/*.{html,js,css,webmanifest}', '**/*-search-index.json'],
skipWaiting: true,
clientsClaim: true,
runtimeCaching: [
{
urlPattern: 'polyfills/*.js',
handler: 'CacheFirst',
},
],
},
},
{

View File

@@ -9,13 +9,13 @@ describe('plugin count', () => {
expect(config.plugins.length).to.equal(3);
});
it('createSpaConfig has 7 plugins', () => {
it('createSpaConfig has 6 plugins', () => {
const config = createSpaConfig();
expect(config.plugins.length).to.equal(7);
expect(config.plugins.length).to.equal(6);
});
it('createMpaConfig has 7 plugins', () => {
it('createMpaConfig has 6 plugins', () => {
const config = createMpaConfig();
expect(config.plugins.length).to.equal(7);
expect(config.plugins.length).to.equal(6);
});
});

View File

@@ -26,10 +26,7 @@ async function execute(configString) {
const config = (await import(configPath)).default;
await buildAndWrite(config);
return async (
fileName,
{ stripServiceWorker = false, stripToBody = false, stripStartEndWhitespace = true } = {},
) => {
return async (fileName, { stripToBody = false, stripStartEndWhitespace = true } = {}) => {
let text = await fs.promises.readFile(
path.join(config.output.dir, fileName.split('/').join(path.sep)),
);
@@ -39,11 +36,6 @@ async function execute(configString) {
const bodyCloseTagStart = text.indexOf('</body>');
text = text.substring(bodyOpenTagEnd, bodyCloseTagStart);
}
if (stripServiceWorker) {
const scriptOpenTagEnd = text.indexOf('<script inject-service-worker');
const scriptCloseTagStart = text.indexOf('</script>', scriptOpenTagEnd) + 9;
text = text.substring(0, scriptOpenTagEnd) + text.substring(scriptCloseTagStart);
}
if (stripStartEndWhitespace) {
text = text.trim();
}
@@ -57,19 +49,16 @@ describe('createMapConfig', () => {
const indexHtml = await readOutput('index.html', {
stripToBody: true,
stripServiceWorker: true,
});
expect(indexHtml).to.equal('<h1>Only static HTML content in index.html</h1>');
const subHtmlIndexHtml = await readOutput('sub-html/index.html', {
stripToBody: true,
stripServiceWorker: true,
});
expect(subHtmlIndexHtml).to.equal('<h1>Only static HTML content in sub-html/index.html</h1>');
const subJsIndexHtml = await readOutput('sub-js/index.html', {
stripToBody: true,
stripServiceWorker: true,
});
expect(subJsIndexHtml).to.equal(
'<h1>Has js in sub-js/index.html</h1>\n\n\n<script type="module" src="../sub-js.js"></script>',
@@ -77,13 +66,9 @@ describe('createMapConfig', () => {
const subJsAbsoluteIndexHtml = await readOutput('sub-js-absolute/index.html', {
stripToBody: true,
stripServiceWorker: true,
});
expect(subJsAbsoluteIndexHtml).to.equal(
'<h1>Has js in sub-js-absolute/index.html</h1>\n\n\n<script type="module" src="../sub-js-absolute.js"></script>',
);
const serviceWorkerJs = await readOutput('service-worker.js');
expect(serviceWorkerJs).to.include('Promise'); // not empty string might be enough...
});
});

View File

@@ -1,5 +1,11 @@
# check-html-links
## 0.2.2
### Patch Changes
- 66c2d78: fix: windows path issue
## 0.2.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "check-html-links",
"version": "0.2.1",
"version": "0.2.2",
"publishConfig": {
"access": "public"
},

View File

@@ -6,6 +6,7 @@ import { createRequire } from 'module';
import { listFiles } from './listFiles.js';
import path from 'path';
import slash from 'slash';
/** @typedef {import('../types/main').Link} Link */
/** @typedef {import('../types/main').LocalFile} LocalFile */
@@ -45,7 +46,7 @@ function extractReferences(htmlFilePath) {
if (ev === SaxEventType.Attribute) {
const data = /** @type {Attribute} */ (/** @type {any} */ (_data));
const attributeName = data.name.toString();
const value = data.value.toString();
const value = slash(data.value.toString());
const entry = {
attribute: attributeName,
value,

View File

@@ -1,5 +1,28 @@
# @rocket/cli
## 0.7.0
### Minor Changes
- 2724f07: The service worker no longer precaches all urls and assets. It now
- caches already visited pages
- caches assets of visited pages (up to 100 files then it replaces older entries)
- on service worker activation it will reload the page if a newer version is available
### Patch Changes
- Updated dependencies [2724f07]
- @rocket/building-rollup@0.3.0
## 0.6.3
### Patch Changes
- 2b7f1ee: Add support for pathprefix
- Updated dependencies [2b7f1ee]
- @rocket/eleventy-plugin-mdjs-unified@0.4.1
## 0.6.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@rocket/cli",
"version": "0.6.2",
"version": "0.7.0",
"publishConfig": {
"access": "public"
},
@@ -57,9 +57,9 @@
"dependencies": {
"@11ty/eleventy": "^0.11.1",
"@11ty/eleventy-img": "^0.7.4",
"@rocket/building-rollup": "^0.2.0",
"@rocket/building-rollup": "^0.3.0",
"@rocket/core": "^0.1.2",
"@rocket/eleventy-plugin-mdjs-unified": "^0.4.0",
"@rocket/eleventy-plugin-mdjs-unified": "^0.4.1",
"@rocket/eleventy-rocket-nav": "^0.3.0",
"@rollup/plugin-babel": "^5.2.2",
"@rollup/plugin-node-resolve": "^11.0.1",
@@ -67,14 +67,15 @@
"@web/dev-server": "^0.1.4",
"@web/dev-server-rollup": "^0.3.2",
"@web/rollup-plugin-copy": "^0.2.0",
"check-html-links": "^0.2.1",
"check-html-links": "^0.2.2",
"command-line-args": "^5.1.1",
"command-line-usage": "^6.1.1",
"fs-extra": "^9.0.1",
"micromatch": "^4.0.2",
"plugins-manager": "^0.2.1",
"slash": "^3.0.0",
"utf8": "^3.0.0"
"utf8": "^3.0.0",
"workbox-window": "^6.1.5"
},
"types": "dist-types/index.d.ts"
}

View File

@@ -0,0 +1,22 @@
(async () => {
if ('serviceWorker' in navigator) {
const { Workbox } = await import('workbox-window');
const url = window.__rocketServiceWorkerUrl || '/service-worker.js';
const wb = new Workbox(url);
wb.addEventListener('message', event => {
if (event.data.type === 'CACHE_UPDATED') {
const { updatedURL } = event.data.payload;
console.log(`Reloading as a newer version of ${updatedURL} became available!`);
window.location.reload();
}
});
wb.register()
.then(function () {
console.log('ServiceWorker registered.');
})
.catch(function (err) {
console.log('ServiceWorker registration failed: ', err);
});
}
})();

View File

@@ -0,0 +1,29 @@
import { registerRoute } from 'workbox-routing';
import { CacheFirst, StaleWhileRevalidate } from 'workbox-strategies';
import { BroadcastUpdatePlugin } from 'workbox-broadcast-update';
import { ExpirationPlugin } from 'workbox-expiration';
addEventListener('install', () => {
// eslint-disable-next-line no-undef
skipWaiting();
});
// addEventListener('activate', () => {
// console.log('activate');
// });
const cacheFirst = new CacheFirst({
cacheName: 'assets',
plugins: [
new ExpirationPlugin({
maxEntries: 100,
}),
],
});
const staleWhileRevalidate = new StaleWhileRevalidate({
cacheName: 'pages',
plugins: [new BroadcastUpdatePlugin()],
});
registerRoute(/(\/|\.html)$/, staleWhileRevalidate);
registerRoute(/\.(css|m?js|svg|woff2|png|jpg|gif|json|xml)$/, cacheFirst);

View File

@@ -0,0 +1,5 @@
<script>
window.__rocketServiceWorkerUrl = '/{{ rocketConfig.serviceWorkerName }}';
</script>
<script type="module" inject-service-worker="" src="{{ '/_assets/scripts/registerServiceWorker.js' | asset | url }}"></script>

View File

@@ -1,3 +0,0 @@
<script>
{{ '_assets/_inline-scripts/serviceWorkerUpdate.js' | asset | toAbsPath | inlineFilePath | safe }}
</script>

View File

@@ -1,7 +1,7 @@
<meta property="og:site_name" content="{{ site.name }}"/>
<meta property="og:type" content="website"/>
<meta property="og:image" content="{{ socialMediaImage }}"/>
<meta property="og:url" content="{{ page.url }}"/>
<meta property="og:image" content="{{ socialMediaImage | url }}"/>
<meta property="og:url" content="{{ page.url | url }}"/>
<meta name="twitter:card" content="summary_large_image"/>

View File

@@ -6,7 +6,7 @@ import fs from 'fs-extra';
import path from 'path';
import { copy } from '@web/rollup-plugin-copy';
import { createMpaConfig } from '@rocket/building-rollup';
import { createMpaConfig, createServiceWorkerConfig } from '@rocket/building-rollup';
import { addPlugin, adjustPluginOptions } from 'plugins-manager';
/**
@@ -56,6 +56,18 @@ async function productionBuild(config) {
});
await buildAndWrite(mpaConfig);
const serviceWorkerSourcePath = path.resolve('docs/_merged_assets/service-worker.js');
if (fs.existsSync(serviceWorkerSourcePath)) {
const serviceWorkerConfig = createServiceWorkerConfig({
input: serviceWorkerSourcePath,
output: {
file: path.join(path.resolve(config.outputDir), config.serviceWorkerName),
},
});
await buildAndWrite(serviceWorkerConfig);
}
}
export class RocketBuild {

View File

@@ -40,6 +40,7 @@ export async function normalizeConfig(inConfig) {
inputDir: 'docs',
outputDir: '_site',
outputDevDir: '_site-dev',
serviceWorkerName: 'service-worker.js',
build: {},
devServer: {},

View File

@@ -15,7 +15,6 @@ export function setFixtureDir(importMetaUrl) {
/**
* @typedef {object} readOutputOptions
* @property {boolean} stripServiceWorker
* @property {boolean} stripToBody
* @property {boolean} stripStartEndWhitespace
* @property {boolean} stripScripts
@@ -47,7 +46,6 @@ export async function readOutput(
cli,
fileName,
{
stripServiceWorker = false,
stripToBody = false,
stripStartEndWhitespace = true,
stripScripts = false,
@@ -67,11 +65,6 @@ export async function readOutput(
const bodyCloseTagStart = text.indexOf('</body>');
text = text.substring(bodyOpenTagEnd, bodyCloseTagStart);
}
if (stripServiceWorker) {
const scriptOpenTagEnd = text.indexOf('<script inject-service-worker');
const scriptCloseTagStart = text.indexOf('</script>', scriptOpenTagEnd) + 9;
text = text.substring(0, scriptOpenTagEnd) + text.substring(scriptCloseTagStart);
}
if (stripScripts) {
const scriptOpenTagEnd = text.indexOf('<script>');
const scriptCloseTagStart = text.indexOf('</script>', scriptOpenTagEnd) + 9;

View File

@@ -66,7 +66,6 @@ describe('RocketCli computedConfig', () => {
const indexHtml = await readBuildOutput(cli, 'index.html', {
stripToBody: true,
stripServiceWorker: true,
});
expect(indexHtml).to.equal('/_merged_assets/11ty-img/5893749-1200.png');
});

View File

@@ -75,9 +75,6 @@ describe('RocketCli e2e', () => {
cli = await executeBuild('e2e-fixtures/rollup-plugin/devbuild-build.rocket.config.js');
const inlineModule = await readBuildOutput(cli, 'e97af63d.js');
expect(inlineModule).to.equal('var a={test:"data"};console.log(a);');
const swCode = await readBuildOutput(cli, 'my-service-worker.js');
expect(swCode).to.not.be.undefined;
});
it('can adjust the inputDir', async () => {
@@ -111,7 +108,6 @@ describe('RocketCli e2e', () => {
cli = await executeBuild('e2e-fixtures/content/pathPrefix.rocket.config.js');
const linkHtml = await readBuildOutput(cli, 'link/index.html', {
stripServiceWorker: true,
stripToBody: true,
});
expect(linkHtml).to.equal(
@@ -119,9 +115,7 @@ describe('RocketCli e2e', () => {
'\n',
),
);
const assetHtml = await readBuildOutput(cli, 'use-assets/index.html', {
stripServiceWorker: true,
});
const assetHtml = await readBuildOutput(cli, 'use-assets/index.html');
expect(assetHtml).to.equal(
'<html><head><link rel="stylesheet" href="../41297ffa.css">\n\n</head><body>\n\n</body></html>',
);

View File

@@ -86,6 +86,12 @@ describe('RocketCli preset', () => {
' </div>',
'',
' <footer id="main-footer"></footer>',
'',
' <script',
' type="module"',
' inject-service-worker=""',
' src="/_merged_assets/scripts/registerServiceWorker.js"',
' ></script>',
' </body>',
'</html>',
].join('\n'),

View File

@@ -1,19 +1,11 @@
// @ts-no-check
import path from 'path';
import { fileURLToPath } from 'url';
import json from '@rollup/plugin-json';
import { addPlugin, adjustPluginOptions } from 'plugins-manager';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const outputDir = path.join(__dirname, '__output');
/** @type {Partial<import("../../../types/main").RocketCliOptions>} */
const config = {
setupDevAndBuildPlugins: [addPlugin({ name: 'json', plugin: json, location: 'top' })],
setupBuildPlugins: [
adjustPluginOptions('workbox', { swDest: path.join(outputDir, 'my-service-worker.js') }),
],
setupBuildPlugins: [adjustPluginOptions('html', { absoluteBaseUrl: 'https://test-me.com' })],
};
export default config;

View File

@@ -31,12 +31,7 @@ export async function expectThrowsAsync(method, { errorMatch, errorMessage } = {
export async function readOutput(
cli,
fileName,
{
stripServiceWorker = false,
stripToBody = false,
stripStartEndWhitespace = true,
type = 'build',
} = {},
{ stripToBody = false, stripStartEndWhitespace = true, type = 'build' } = {},
) {
const outputDir = type === 'build' ? cli.config.outputDir : cli.config.outputDevDir;
let text = await fs.promises.readFile(path.join(outputDir, fileName));
@@ -46,11 +41,6 @@ export async function readOutput(
const bodyCloseTagStart = text.indexOf('</body>');
text = text.substring(bodyOpenTagEnd, bodyCloseTagStart);
}
if (stripServiceWorker) {
const scriptOpenTagEnd = text.indexOf('<script inject-service-worker');
const scriptCloseTagStart = text.indexOf('</script>', scriptOpenTagEnd) + 9;
text = text.substring(0, scriptOpenTagEnd) + text.substring(scriptCloseTagStart);
}
if (stripStartEndWhitespace) {
text = text.trim();
}

View File

@@ -41,6 +41,7 @@ describe('normalizeConfig', () => {
setupEleventyComputedConfig: [],
setupCliPlugins: [],
presets: [],
serviceWorkerName: 'service-worker.js',
plugins: [
{ commands: ['start'] },
{ commands: ['build'] },
@@ -76,6 +77,7 @@ describe('normalizeConfig', () => {
setupCliPlugins: [],
setupEleventyComputedConfig: [],
presets: [],
serviceWorkerName: 'service-worker.js',
plugins: [
{ commands: ['start'] },
{ commands: ['build'] },
@@ -108,6 +110,7 @@ describe('normalizeConfig', () => {
setupCliPlugins: [],
setupEleventyComputedConfig: [],
presets: [],
serviceWorkerName: 'service-worker.js',
plugins: [
{ commands: ['start'] },
{ commands: ['build'] },
@@ -143,6 +146,7 @@ describe('normalizeConfig', () => {
setupCliPlugins: [],
setupEleventyComputedConfig: [],
presets: [],
serviceWorkerName: 'service-worker.js',
plugins: [
{ commands: ['start'] },
{ commands: ['build'] },

View File

@@ -20,6 +20,7 @@ interface RocketStartConfig {
export interface RocketCliOptions {
presets: Array<RocketPreset>;
pathPrefix?: string;
serviceWorkerName?: string;
inputDir: string;
outputDir: string;
emptyOutputDir?: boolean;

View File

@@ -1,5 +1,13 @@
# @rocket/eleventy-plugin-mdjs-unified
## 0.4.1
### Patch Changes
- 2b7f1ee: Add support for pathprefix
- Updated dependencies [2b7f1ee]
- @mdjs/core@0.7.1
## 0.4.0
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@rocket/eleventy-plugin-mdjs-unified",
"version": "0.4.0",
"version": "0.4.1",
"publishConfig": {
"access": "public"
},
@@ -31,7 +31,7 @@
"mdjs"
],
"dependencies": {
"@mdjs/core": "^0.7.0",
"@mdjs/core": "^0.7.1",
"es-module-lexer": "^0.3.26",
"unist-util-visit": "^2.0.3"
},

View File

@@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
const path = require('path');
const slash = require('slash');
const fs = require('fs');
const { mdjsProcess } = require('@mdjs/core');
const visit = require('unist-util-visit');
@@ -121,8 +122,12 @@ function eleventyUnified(pluginOptions) {
return plugins.map(plugin => {
if (plugin.options) {
plugin.options.page = eleventySettings.page;
plugin.options.rocketConfig = eleventySettings.rocketConfig;
} else {
plugin.options = { page: eleventySettings.page };
plugin.options = {
page: eleventySettings.page,
rocketConfig: eleventySettings.rocketConfig,
};
}
return plugin;
});
@@ -145,8 +150,19 @@ function eleventyUnified(pluginOptions) {
const newName = path.join(newFolder, '__mdjs-stories.js');
await fs.promises.mkdir(newFolder, { recursive: true });
await fs.promises.writeFile(newName, result.jsCode, 'utf8');
let scriptUrl = eleventySettings.page.url;
if (
eleventySettings.rocketConfig &&
eleventySettings.rocketConfig.command === 'build' &&
eleventySettings.rocketConfig.pathPrefix
) {
scriptUrl = slash(
path.join(eleventySettings.rocketConfig.pathPrefix, eleventySettings.page.url),
);
}
code += `
<script type="module" src="${eleventySettings.page.url}__mdjs-stories.js" mdjs-setup></script>
<script type="module" src="${scriptUrl}__mdjs-stories.js" mdjs-setup></script>
`;
}
return code;

View File

@@ -1,5 +1,17 @@
# @rocket/launch
## 0.4.2
### Patch Changes
- 2b7f1ee: Add support for pathprefix
## 0.4.1
### Patch Changes
- 81edf45: Reduce the amount of js files in the build by avoiding inline script tags
## 0.4.0
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@rocket/launch",
"version": "0.4.0",
"version": "0.4.2",
"publishConfig": {
"access": "public"
},

View File

@@ -1,17 +1 @@
{#
src leads to the file not being included/executed? bug in rollup-plugin-html?
<script type="module" src="{{ '/_assets/scripts/init-navigation.js' | asset }}"></script>
#}
<script type="module">
import '@rocket/navigation/rocket-navigation.js';
import '@rocket/drawer/rocket-drawer.js';
const drawer = document.querySelector('#sidebar');
// Toggle button
const triggers = document.querySelectorAll('[data-action="trigger-mobile-menu"]');
for (const trigger of [...triggers]) {
trigger.addEventListener('click', function () {
drawer.opened = true;
});
}
</script>
<script type="module" src="{{ '/_assets/scripts/init-navigation.js' | asset | url }}"></script>

View File

@@ -1,7 +1,7 @@
<meta property="og:site_name" content="{{ site.name }}"/>
<meta property="og:type" content="website"/>
<meta property="og:image" content="{{ socialMediaImage }}"/>
<meta property="og:url" content="{{ page.url }}"/>
<meta property="og:image" content="{{ socialMediaImage | url }}"/>
<meta property="og:url" content="{{ page.url | url }}"/>
<meta name="twitter:card" content="summary_large_image"/>

View File

@@ -208,19 +208,13 @@ describe('RocketLaunch preset', () => {
' </div>',
' </footer>',
'',
' <script type="module">',
' import "@rocket/navigation/rocket-navigation.js";',
' import "@rocket/drawer/rocket-drawer.js";',
' const drawer = document.querySelector("#sidebar");',
' <script type="module" src="/_merged_assets/scripts/init-navigation.js"></script>',
'',
' // Toggle button',
` const triggers = document.querySelectorAll('[data-action="trigger-mobile-menu"]');`,
' for (const trigger of [...triggers]) {',
' trigger.addEventListener("click", function () {',
' drawer.opened = true;',
' });',
' }',
' </script>',
' <script',
' type="module"',
' inject-service-worker=""',
' src="/_merged_assets/scripts/registerServiceWorker.js"',
' ></script>',
' </body>',
'</html>',
].join('\n'),
@@ -443,19 +437,13 @@ describe('RocketLaunch preset', () => {
' </div>',
' </footer>',
'',
' <script type="module">',
' import "@rocket/navigation/rocket-navigation.js";',
' import "@rocket/drawer/rocket-drawer.js";',
' const drawer = document.querySelector("#sidebar");',
' <script type="module" src="/_merged_assets/scripts/init-navigation.js"></script>',
'',
' // Toggle button',
` const triggers = document.querySelectorAll('[data-action="trigger-mobile-menu"]');`,
' for (const trigger of [...triggers]) {',
' trigger.addEventListener("click", function () {',
' drawer.opened = true;',
' });',
' }',
' </script>',
' <script',
' type="module"',
' inject-service-worker=""',
' src="/_merged_assets/scripts/registerServiceWorker.js"',
' ></script>',
' </body>',
'</html>',
].join('\n'),

View File

@@ -1,5 +1,11 @@
# Change Log
## 0.7.1
### Patch Changes
- 2b7f1ee: Add support for pathprefix
## 0.7.0
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@mdjs/core",
"version": "0.7.0",
"version": "0.7.1",
"publishConfig": {
"access": "public"
},
@@ -43,7 +43,7 @@
"remark"
],
"dependencies": {
"@mdjs/mdjs-preview": "^0.4.0",
"@mdjs/mdjs-preview": "^0.4.2",
"@mdjs/mdjs-story": "^0.2.0",
"@types/unist": "^2.0.3",
"es-module-lexer": "^0.3.26",

View File

@@ -1,8 +1,43 @@
const path = require('path');
const slash = require('slash');
/** @typedef {import('vfile').VFileOptions} VFileOptions */
/** @typedef {import('unist').Node} Node */
/** @typedef {import('@mdjs/core/types/code').Story} Story */
function mdjsSetupCode({ rootNodeQueryCode = 'document', simulationSettings = {} } = {}) {
/**
* @typedef {Object} simulationSettings
* @property {string} [simulatorUrl]
*/
/**
* @typedef {Object} rocketConfig
* @property {string} [pathPrefix]
*/
/**
* @param {object} options
* @param {string} [options.rootNodeQueryCode]
* @param {simulationSettings} [options.simulationSettings]
* @param {rocketConfig} [options.rocketConfig]
* @returns
*/
function mdjsSetupCode({
rootNodeQueryCode = 'document',
simulationSettings = {},
rocketConfig = {},
} = {}) {
if (rocketConfig && rocketConfig.pathPrefix) {
if (simulationSettings && simulationSettings.simulatorUrl) {
const { simulatorUrl } = simulationSettings;
if (simulatorUrl[0] === '/' && !simulatorUrl.startsWith(rocketConfig.pathPrefix)) {
simulationSettings.simulatorUrl = slash(
path.join(rocketConfig.pathPrefix, simulationSettings.simulatorUrl),
);
}
}
}
/**
* @param {Node} tree
* @param {VFileOptions} file

View File

@@ -1,5 +1,13 @@
# @mdjs/mdjs-preview
## 0.4.2
### Patch Changes
- 72f631a: Improve customizations by hiding empty themes, platforms and adding parts to be styled.
- 74dd8d1: Autoheight will not grow bigger than the current size height
- 72f631a: Add a copy code button
## 0.4.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@mdjs/mdjs-preview",
"version": "0.4.1",
"version": "0.4.2",
"publishConfig": {
"access": "public"
},

View File

@@ -51,6 +51,7 @@ export class MdJsPreview extends LitElement {
edgeDistance: { type: Boolean },
autoHeight: { type: Boolean },
rememberSettings: { type: Boolean },
__copyButtonText: { type: String },
};
}
@@ -61,11 +62,14 @@ export class MdJsPreview extends LitElement {
this.key = '';
this.contentHeight = 0;
this.simulatorUrl = '';
this.__supportsClipboard = 'clipboard' in navigator;
this.__copyButtonText = 'Copy Code';
this.theme = 'light';
/** @type {{ key: string, name: string }[]} */
this.themes = [
{ key: 'light', name: 'Light' },
{ key: 'dark', name: 'Dark' },
// { key: 'light', name: 'Light' },
// { key: 'dark', name: 'Dark' },
];
this.language = 'en-US';
@@ -83,16 +87,17 @@ export class MdJsPreview extends LitElement {
{ key: 'pt', name: 'Portuguese' },
{ key: 'ro', name: 'Romanian' },
{ key: 'sv', name: 'Swedish' },
{ key: 'sv', name: 'Swedish' },
];
this.platform = 'web';
/** @type {{ key: string, name: string }[]} */
this.platforms = [
{ key: 'web', name: 'Web' },
// { key: 'web', name: 'Web' },
// { key: 'web-windows', name: 'Windows' },
// { key: 'web-mac', name: 'Mac' },
{ key: 'android', name: 'Android' },
{ key: 'ios', name: 'iOS' },
// { key: 'android', name: 'Android' },
// { key: 'ios', name: 'iOS' },
];
this.size = 'webSmall';
@@ -178,10 +183,11 @@ export class MdJsPreview extends LitElement {
}
get deviceHeight() {
const maxHeight = this.sizeData?.height || 50;
if (this.autoHeight) {
return this.contentHeight + 10;
return Math.min(this.contentHeight, maxHeight);
}
return this.sizeData?.height || 50;
return maxHeight;
}
/**
@@ -269,10 +275,19 @@ export class MdJsPreview extends LitElement {
this.size = sizes[0].key;
}
async onCopy() {
if (this.textContent) {
await navigator.clipboard.writeText(this.textContent.trim());
this.__copyButtonText = 'Copied ✅';
setTimeout(() => {
this.__copyButtonText = 'Copy code';
}, 2000);
}
}
renderPlatforms() {
return html`
<div>
<h3>Platform</h3>
if (this.platforms.length) {
return html`
<h4>Platform</h4>
<div
class="segmented-control"
@@ -298,14 +313,24 @@ export class MdJsPreview extends LitElement {
`,
)}
</div>
</div>
`;
`;
}
}
renderPlatform() {
if (this.platforms.length) {
return html`
<div>
<h3>Platform</h3>
${this.renderPlatforms()}
</div>
`;
}
}
renderSizes() {
return html`
<div>
<h3>Viewport</h3>
if (this.sizes.length) {
return html`
<h4>Size</h4>
<div
class="segmented-control"
@@ -331,16 +356,22 @@ export class MdJsPreview extends LitElement {
`,
)}
</div>
${this.renderAutoHeight()}
`;
}
}
renderViewport() {
return html`
<div>
<h3>Viewport</h3>
${this.renderSizes()} ${this.renderAutoHeight()}
</div>
`;
}
renderThemes() {
return html`
<div>
<h3>Visual</h3>
<h4>Theme</h4>
if (this.themes.length) {
return html`
<div
class="segmented-control"
@change=${
@@ -365,15 +396,22 @@ export class MdJsPreview extends LitElement {
`,
)}
</div>
${this.renderEdgeDistance()}
`;
}
}
renderVisual() {
return html`
<div>
<h3>Visual</h3>
${this.renderThemes()} ${this.renderEdgeDistance()}
</div>
`;
}
renderLanguages() {
return html`
<div>
<h3>Localization</h3>
if (this.languages.length) {
return html`
<label>
Language
<select
@@ -394,6 +432,15 @@ export class MdJsPreview extends LitElement {
)}
</select>
</label>
`;
}
}
renderLocalization() {
return html`
<div>
<h3>Localization</h3>
${this.renderLanguages()}
</div>
`;
}
@@ -403,7 +450,7 @@ export class MdJsPreview extends LitElement {
<div>
<label class="${this.edgeDistance ? 'switch selected' : 'switch'}">
Apply distance to edge
<span class="switch-button"></span>
<span part="switch-button"></span>
<input
type="checkbox"
@@ -426,7 +473,7 @@ export class MdJsPreview extends LitElement {
<div>
<label class="${this.autoHeight ? 'switch selected' : 'switch'}">
Fit height to content
<span class="switch-button"></span>
<span part="switch-button"></span>
<input
type="checkbox"
?checked=${this.autoHeight}
@@ -448,7 +495,7 @@ export class MdJsPreview extends LitElement {
<div>
<label class="${this.sameSettings ? 'switch selected' : 'switch'}">
Same settings for all simulations
<span class="switch-button"></span>
<span part="switch-button"></span>
<input
type="checkbox"
?checked=${this.sameSettings}
@@ -473,7 +520,7 @@ export class MdJsPreview extends LitElement {
<div>
<label class="${this.rememberSettings ? 'switch selected' : 'switch'}">
Remember settings
<span class="switch-button"></span>
<span part="switch-button"></span>
<input
type="checkbox"
?checked=${this.rememberSettings}
@@ -506,11 +553,12 @@ export class MdJsPreview extends LitElement {
? html`<div>${this.story({ shadowRoot: this.shadowRoot })}</div>`
: html`
<iframe
part="iframe"
csp=${`script-src ${document.location.origin} 'unsafe-inline'; connect-src ws://${document.location.host}/`}
.src=${this.iframeUrl}
style=${`width: ${this.sizeData.width}px; height: ${this.deviceHeight}px;`}
></iframe>
<p class="frame-description" style=${`width: ${this.sizeData.width + 4}px;`}>
<p part="frame-description" style=${`width: ${this.sizeData.width + 4}px;`}>
${this.sizeData.name} - ${this.deviceHeight}x${this.sizeData.width}
</p>
`}
@@ -523,8 +571,8 @@ export class MdJsPreview extends LitElement {
</h3>
<div slot="content">
<div class="settings-wrapper">
${this.renderPlatforms()} ${this.renderSizes()} ${this.renderThemes()}
${this.renderLanguages()} ${this.renderSyncSettings()}
${this.renderPlatform()} ${this.renderViewport()} ${this.renderVisual()}
${this.renderLocalization()} ${this.renderSyncSettings()}
</div>
</div>
`
@@ -533,7 +581,10 @@ export class MdJsPreview extends LitElement {
<button>Code</button>
</h3>
<div slot="content">
<slot></slot>
<slot id="code-slot"></slot>
<button part="copy-button" @click="${this.onCopy}" ?hidden="${!this.__supportsClipboard}">
${this.__copyButtonText}
</button>
</div>
</lion-accordion>
${this.simulatorUrl
@@ -564,26 +615,45 @@ export class MdJsPreview extends LitElement {
background: #fff;
}
[part='copy-button'] {
border: 1px solid var(--primary-color, #3f51b5);
border-radius: 9px;
padding: 7px;
background: none;
font-weight: bold;
color: var(--primary-color, #3f51b5);
text-align: center;
font-size: 12px;
line-height: 12px;
float: right;
margin-top: -10px;
}
[part='copy-button']:hover {
background-color: var(--primary-color, #3f51b5);
color: #fff;
}
.switch {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
.switch:focus-within .switch-button {
.switch:focus-within [part='switch-button'] {
box-shadow: 0 0 0 1px hsl(0deg 0% 100% / 40%), 0 0 0 4px rgb(31 117 203 / 48%);
}
.switch-button {
[part='switch-button'] {
display: inline-block;
width: 44px;
background: grey;
background: #808080;
height: 25px;
border-radius: 15px;
position: relative;
}
.switch-button::after {
[part='switch-button']::after {
content: ' ';
width: 18px;
height: 18px;
@@ -595,16 +665,16 @@ export class MdJsPreview extends LitElement {
left: 4px;
}
.switch.selected .switch-button {
background: green;
.switch.selected [part='switch-button'] {
background: var(--primary-color, #008000);
}
.switch.selected .switch-button::after {
.switch.selected [part='switch-button']::after {
left: auto;
right: 4px;
}
.frame-description {
[part='frame-description'] {
margin: -5px 0 10px 0;
text-align: right;
font-size: 12px;
@@ -640,23 +710,23 @@ export class MdJsPreview extends LitElement {
}
.controls a {
color: #3f51b5;
color: var(--primary-color, #3f51b5);
font-size: 14px;
line-height: 37px;
}
.simulation-toggle {
border: 1px solid #3f51b5;
border: 1px solid var(--primary-color, #3f51b5);
border-radius: 9px;
padding: 10px;
background: none;
font-weight: bold;
color: #3f51b5;
color: var(--primary-color, #3f51b5);
text-align: center;
}
.simulation-toggle:hover {
background-color: #3f51b5;
background-color: var(--primary-color, #3f51b5);
color: #fff;
}
@@ -705,7 +775,7 @@ export class MdJsPreview extends LitElement {
}
.segmented-control {
border: 1px solid #3f51b5;
border: 1px solid var(--primary-color, #3f51b5);
border-radius: 18px;
display: inline-block;
font-size: 14px;
@@ -728,7 +798,7 @@ export class MdJsPreview extends LitElement {
}
.segmented-control label.selected span {
background: #3f51b5;
background: var(--primary-color, #3f51b5);
color: #fff;
}

View File

@@ -1,5 +1,17 @@
# @rocket/search
## 0.3.5
### Patch Changes
- 2b7f1ee: Add support for pathprefix
## 0.3.4
### Patch Changes
- 81edf45: Reduce the amount of js files in the build by avoiding inline script tags
## 0.3.3
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@rocket/search",
"version": "0.3.3",
"version": "0.3.5",
"publishConfig": {
"access": "public"
},

View File

@@ -0,0 +1 @@
import '@rocket/search/rocket-search.js';

View File

@@ -4,6 +4,4 @@
</svg>
</rocket-search>
<script type="module">
import '@rocket/search/rocket-search.js';
</script>
<script type="module" src="{{ '/_assets/scripts/define-rocket-search.js' | asset | url }}"></script>

View File

@@ -4,14 +4,29 @@ import { rocketSearch } from '@rocket/search';
import { absoluteBaseUrlNetlify } from '@rocket/core/helpers';
import { adjustPluginOptions } from 'plugins-manager';
export default {
/** @type {Partial<import("./packages/cli/types/main").RocketCliOptions>} */
const config = {
presets: [rocketLaunch(), rocketBlog(), rocketSearch()],
absoluteBaseUrl: absoluteBaseUrlNetlify('http://localhost:8080'),
setupUnifiedPlugins: [
adjustPluginOptions('mdjsSetupCode', {
simulationSettings: { simulatorUrl: '/simulator/' },
simulationSettings: {
simulatorUrl: '/simulator/',
themes: [
{ key: 'light', name: 'Light' },
{ key: 'dark', name: 'Dark' },
],
platforms: [
{ key: 'web', name: 'Web' },
{ key: 'android', name: 'Android' },
{ key: 'ios', name: 'iOS' },
],
},
}),
],
// serviceWorkerName: 'sw.js',
// emptyOutputDir: false,
};
export default config;

330
yarn.lock
View File

@@ -81,7 +81,7 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
"@babel/core@^7.11.1", "@babel/core@^7.12.10":
"@babel/core@^7.12.10":
version "7.12.10"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
@@ -758,7 +758,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.12.1"
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.11":
"@babel/preset-env@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9"
integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==
@@ -841,7 +841,7 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
"@babel/runtime@^7.10.4", "@babel/runtime@^7.11.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
"@babel/runtime@^7.10.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
@@ -1096,44 +1096,6 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@hapi/address@^2.1.2":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
"@hapi/formula@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-1.2.0.tgz#994649c7fea1a90b91a0a1e6d983523f680e10cd"
integrity sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==
"@hapi/hoek@^8.2.4", "@hapi/hoek@^8.3.0":
version "8.5.1"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
"@hapi/joi@^16.1.8":
version "16.1.8"
resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-16.1.8.tgz#84c1f126269489871ad4e2decc786e0adef06839"
integrity sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==
dependencies:
"@hapi/address" "^2.1.2"
"@hapi/formula" "^1.2.0"
"@hapi/hoek" "^8.2.4"
"@hapi/pinpoint" "^1.0.2"
"@hapi/topo" "^3.1.3"
"@hapi/pinpoint@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-1.0.2.tgz#025b7a36dbbf4d35bf1acd071c26b20ef41e0d13"
integrity sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==
"@hapi/topo@^3.1.3":
version "3.1.6"
resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29"
integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
dependencies:
"@hapi/hoek" "^8.3.0"
"@lion/accordion@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@lion/accordion/-/accordion-0.4.2.tgz#efeb56360113a2b68e182ff29ef0932edd17df8c"
@@ -1310,7 +1272,7 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.6.0.tgz#f022195afdfc942e088ee2101285a1d31c7d727f"
integrity sha512-cPqjjzuFWNK3BSKLm0abspP0sp/IGOli4p5I5fKFAzdS8fvjdOwDCfZqAaIiXd9lPkOWi3SUUfZof3hEb7J/uw==
"@rollup/plugin-babel@^5.2.0", "@rollup/plugin-babel@^5.2.2":
"@rollup/plugin-babel@^5.2.2":
version "5.2.2"
resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.2.2.tgz#e5623a01dd8e37e004ba87f2de218c611727d9b2"
integrity sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA==
@@ -1350,22 +1312,10 @@
is-module "^1.0.0"
resolve "^1.19.0"
"@rollup/plugin-node-resolve@^9.0.0":
version "9.0.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6"
integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==
dependencies:
"@rollup/pluginutils" "^3.1.0"
"@types/resolve" "1.17.1"
builtin-modules "^3.1.0"
deepmerge "^4.2.2"
is-module "^1.0.0"
resolve "^1.17.0"
"@rollup/plugin-replace@^2.3.3", "@rollup/plugin-replace@^2.3.4":
version "2.3.4"
resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca"
integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==
"@rollup/plugin-replace@^2.4.2":
version "2.4.2"
resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a"
integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==
dependencies:
"@rollup/pluginutils" "^3.1.0"
magic-string "^0.25.7"
@@ -1415,14 +1365,6 @@
resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
"@surma/rollup-plugin-off-main-thread@^1.4.1":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58"
integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==
dependencies:
ejs "^2.6.1"
magic-string "^0.25.0"
"@types/accepts@*":
version "1.3.5"
resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575"
@@ -3008,11 +2950,6 @@ commander@^6.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
common-tags@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -3223,11 +3160,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
crypto-random-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
csv-generate@^3.2.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.3.0.tgz#0e25658f1bb9806d94fec7b270896a35c7eedf1a"
@@ -3543,7 +3475,7 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
ejs@^2.6.1, ejs@^2.7.4:
ejs@^2.7.4:
version "2.7.4"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
@@ -3974,7 +3906,7 @@ fast-glob@^3.1.1, fast-glob@^3.2.2:
micromatch "^4.0.2"
picomatch "^2.2.1"
fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -5563,7 +5495,7 @@ luxon@^1.24.1:
resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.25.0.tgz#d86219e90bc0102c0eb299d65b2f5e95efe1fe72"
integrity sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ==
magic-string@^0.25.0, magic-string@^0.25.7:
magic-string@^0.25.7:
version "0.25.7"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
@@ -6736,11 +6668,6 @@ prettier@^2.2.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
version "5.5.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e"
integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==
pretty-ms@^0.2.1:
version "0.2.2"
resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6"
@@ -7423,7 +7350,7 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
rollup-plugin-terser@^7.0.0, rollup-plugin-terser@^7.0.2:
rollup-plugin-terser@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
@@ -7433,18 +7360,7 @@ rollup-plugin-terser@^7.0.0, rollup-plugin-terser@^7.0.2:
serialize-javascript "^4.0.0"
terser "^5.0.0"
rollup-plugin-workbox@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-workbox/-/rollup-plugin-workbox-6.1.0.tgz#120cde36547769fc8cc45eae97a338c4017ed936"
integrity sha512-BqeEBj53fiqNLjiiyVvuBlic3Apg2Us1mpTkn3zgqaipJoAOC3soi+W9vrOQcm190lHLo9WNvi1wQg/M7olJHg==
dependencies:
"@rollup/plugin-node-resolve" "^11.0.1"
"@rollup/plugin-replace" "^2.3.4"
pretty-bytes "^5.4.1"
rollup-plugin-terser "^7.0.2"
workbox-build "^6.0.2"
rollup@^2.25.0, rollup@^2.35.1:
rollup@^2.35.1:
version "2.35.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.35.1.tgz#e6bc8d10893556a638066f89e8c97f422d03968c"
integrity sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA==
@@ -7866,11 +7782,6 @@ source-map-support@^0.5.17, source-map-support@~0.5.19:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
source-map@^0.5.0, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -8115,11 +8026,6 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
strip-comments@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b"
integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -8238,21 +8144,6 @@ tar-stream@^2.1.4:
inherits "^2.0.3"
readable-stream "^3.1.1"
temp-dir@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
tempy@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3"
integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==
dependencies:
is-stream "^2.0.0"
temp-dir "^2.0.0"
type-fest "^0.16.0"
unique-string "^2.0.0"
term-size@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
@@ -8455,11 +8346,6 @@ type-fest@^0.13.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
type-fest@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"
integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==
type-fest@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
@@ -8581,13 +8467,6 @@ unified@^9.1.0, unified@^9.2.0:
trough "^1.0.0"
vfile "^4.0.0"
unique-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
dependencies:
crypto-random-string "^2.0.0"
unist-builder@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436"
@@ -8683,11 +8562,6 @@ untildify@^4.0.0:
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
upath@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
uri-js@^4.2.2:
version "4.4.0"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
@@ -8888,160 +8762,52 @@ wordwrapjs@^4.0.0:
reduce-flatten "^2.0.0"
typical "^5.0.0"
workbox-background-sync@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.0.2.tgz#9205f5ef7fbf68203b925bdc85bdaa31a34fbbe6"
integrity sha512-KQU2ntvbvFoBvCRm+EDpWAaykt4u/oaF5j3C6io0dZVWhFc/ZwgYDii8fb34LTenug3VPWQELdw9dNBCoP4b0w==
workbox-broadcast-update@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz#49a2a4cc50c7b1cfe86bed6d8f15edf1891d1e79"
integrity sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA==
dependencies:
workbox-core "^6.0.2"
workbox-core "^6.1.5"
workbox-broadcast-update@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.0.2.tgz#fc034277e631e4193dcee9f6b0a77e415b4ddefb"
integrity sha512-yCXYEln7nU8FkMDysYQPirpgFXtsdBtxruHbvZzRsxMHvAELf3j/o6Ufae1zjl8XanLF696sqSNxehpCGSD6tw==
workbox-cacheable-response@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz#2772e09a333cba47b0923ed91fd022416b69e75c"
integrity sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA==
dependencies:
workbox-core "^6.0.2"
workbox-core "^6.1.5"
workbox-build@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.0.2.tgz#a23eebd6556cf473fedda77c08421b2d093efc32"
integrity sha512-Dukbt+p62Yzb12SXAmycTYvHngJ8aRtXy3hymsC8B6gxTCZmCZ0u5JuKhu7lNLbDwDkYE78lhFvT9SF+MXFz5A==
workbox-core@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.1.5.tgz#424ff600e2c5448b14ebd58b2f5ac8ed91b73fb9"
integrity sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA==
workbox-expiration@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.1.5.tgz#a62a4ac953bb654aa969ede13507ca5bd154adc2"
integrity sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ==
dependencies:
"@babel/core" "^7.11.1"
"@babel/preset-env" "^7.11.0"
"@babel/runtime" "^7.11.2"
"@hapi/joi" "^16.1.8"
"@rollup/plugin-babel" "^5.2.0"
"@rollup/plugin-node-resolve" "^9.0.0"
"@rollup/plugin-replace" "^2.3.3"
"@surma/rollup-plugin-off-main-thread" "^1.4.1"
common-tags "^1.8.0"
fast-json-stable-stringify "^2.1.0"
fs-extra "^9.0.1"
glob "^7.1.6"
lodash "^4.17.20"
pretty-bytes "^5.3.0"
rollup "^2.25.0"
rollup-plugin-terser "^7.0.0"
source-map "^0.7.3"
source-map-url "^0.4.0"
stringify-object "^3.3.0"
strip-comments "^2.0.1"
tempy "^0.6.0"
upath "^1.2.0"
workbox-background-sync "^6.0.2"
workbox-broadcast-update "^6.0.2"
workbox-cacheable-response "^6.0.2"
workbox-core "^6.0.2"
workbox-expiration "^6.0.2"
workbox-google-analytics "^6.0.2"
workbox-navigation-preload "^6.0.2"
workbox-precaching "^6.0.2"
workbox-range-requests "^6.0.2"
workbox-recipes "^6.0.2"
workbox-routing "^6.0.2"
workbox-strategies "^6.0.2"
workbox-streams "^6.0.2"
workbox-sw "^6.0.2"
workbox-window "^6.0.2"
workbox-core "^6.1.5"
workbox-cacheable-response@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.0.2.tgz#00b1133c4c846a2874f32ae14206c0636bacfd87"
integrity sha512-OrgFiYWkmFXDIbNRYSu+fchcfoZqyJ4yZbdc8WKUjr9v/MghKHfR9u7UI077xBkjno5J3YNpbwx73/no3HkrzA==
workbox-routing@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.1.5.tgz#15884d6152dba03faef83f0b23331846d8b6ef8e"
integrity sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ==
dependencies:
workbox-core "^6.0.2"
workbox-core "^6.1.5"
workbox-core@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.0.2.tgz#2f865cfe633890b4210fd6d6fdb049a6daed0914"
integrity sha512-Ksl6qeikGb+BOCILoCUJGxwlEQOeeqdpOnpOr9UDt3NtacPYbfYBmpYpKArw5DFWK+5geBsFqgUUlXThlCYfKQ==
workbox-expiration@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.0.2.tgz#ac01e8d17f48daa31dc0872c09ee6f4d2cf28ccb"
integrity sha512-6+nbR18cklAdI3BPT675ytftXPwnVbXGR8mPWNWTJtl5y2urRYv56ZOJLD7FBFVkZ8EjWiRhNP/A0fkxgdKtWQ==
workbox-strategies@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.1.5.tgz#2549a3e78f0eda371b760c4db21feb0d26143573"
integrity sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw==
dependencies:
workbox-core "^6.0.2"
workbox-core "^6.1.5"
workbox-google-analytics@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.0.2.tgz#7e3641adb30a3acb25006b244035631cf6f65019"
integrity sha512-xmYJurR1M6Pzc2SBM/E7AgwmBszhu/YYDzBnU+HJPZFLbTG97ASIJyTXV1vcczA/dNaS0miIf0cFqneozVlDRw==
workbox-window@^6.1.5:
version "6.1.5"
resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.1.5.tgz#017b22342e10c6df6b9672326b575ec950b6cd80"
integrity sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA==
dependencies:
workbox-background-sync "^6.0.2"
workbox-core "^6.0.2"
workbox-routing "^6.0.2"
workbox-strategies "^6.0.2"
workbox-navigation-preload@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.0.2.tgz#bfd9c61096be921b830153a3004b7212220748dc"
integrity sha512-7+ojLrjXmTFZBfGmUQIcBWB+xrFgXLMJGNQAtxT7Ta9A23rEWo8jqAgeuwAylebcORUlM+ztgYTV7eGp+AD+Yg==
dependencies:
workbox-core "^6.0.2"
workbox-precaching@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.0.2.tgz#cb45f290b0604bef1d9fc96bf42df82385d54e54"
integrity sha512-sqKWL2emzmGnfJpna+9RjUkUiqQO++AKfwljCbgkHg8wBbVLy/rnui3eelKgAI7D8R31LJFfiZkY/kXmwkjtlQ==
dependencies:
workbox-core "^6.0.2"
workbox-routing "^6.0.2"
workbox-strategies "^6.0.2"
workbox-range-requests@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.0.2.tgz#3b50cbe8ddaaed7e3bfaa2dfdcd6a22e02fe7770"
integrity sha512-qCrDbH9AzDbCErde71Nys2iNZO9I9M9Jgl/9/Q67dGQVwFsEq73SuIzS2DGIBKqtIdC5QUigC3d7XJONajclUQ==
dependencies:
workbox-core "^6.0.2"
workbox-recipes@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.0.2.tgz#ad4b3f26a71a7396004c4f617af318f3fd072208"
integrity sha512-ewZIHO4jYE6bnEeUIYS6joQy3l+MydpOsVr2F6EpE8ps++z1ScbSdLtJU+yu6WuO3lH44HFZLeFxYQqYm50QAA==
dependencies:
workbox-cacheable-response "^6.0.2"
workbox-core "^6.0.2"
workbox-expiration "^6.0.2"
workbox-precaching "^6.0.2"
workbox-routing "^6.0.2"
workbox-strategies "^6.0.2"
workbox-routing@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.0.2.tgz#8380bc322a2b1c44978df8ff6ae4e4d723f4e3f8"
integrity sha512-iQ9ch3fL1YpztDLfHNURaHQ0ispgPCdzWmZZhtSHUyy/+YkTlIiDVTbOQCIpHIrWlKQiim6X3K2ItIy1FW9+wA==
dependencies:
workbox-core "^6.0.2"
workbox-strategies@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.0.2.tgz#f4383e2e5d46c1546e6e08048c9f5c9a7beb5137"
integrity sha512-HjLnYCVS60U7OKhl5NIq8NAQXrotJQRDakmIONnRlQIlP2If/kAiQSUP3QCHMq4EeXGiF+/CdlR1/bhYBHZzZg==
dependencies:
workbox-core "^6.0.2"
workbox-streams@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.0.2.tgz#07c19025af309ad3475e737018a05ed538bffacd"
integrity sha512-bckftu/iMlg5LFXPZ6NX/FUc/w4illgxSuwtsZkQAO6Uen1EeegjfLyenO01/dwoyc3D/AlZepMdhv87XhE7HQ==
dependencies:
workbox-core "^6.0.2"
workbox-routing "^6.0.2"
workbox-sw@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.0.2.tgz#cd1b8b02ceaaf1abe5804936158a87ec605d271e"
integrity sha512-EoOjbyy5bpoBoSqt2PIeDOZ/JJ41f+WJjb979PkfIUWw4F+F/w2uKJJrMA5fk+nWnVge83Fwy8nF3dWNsqOrdg==
workbox-window@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.0.2.tgz#9b47fdb7c088aa4e8b7d0c6cfda17c8bfca6bf7f"
integrity sha512-I/X+qUh1AwN9x/MxFbXsPn7DA27BMtzkXo55w1tBD8V54fv8nUCeC5E4RpXt/mlgdSwBztnURCQTWsdhTrSUjg==
dependencies:
workbox-core "^6.0.2"
workbox-core "^6.1.5"
workerpool@6.0.2:
version "6.0.2"