feat(v2): injectHtmlTags API to inject head and/or body html tags (#2057)

* wip: define html tag definition

* feat(v2): implement injectHtmlTags api

* remove useless file

* nits

* documentation

* allow string, use prebodyTags and postBodyTags

* typo

* refactor typing

* chore(v2): bump deps
This commit is contained in:
Endi 2019-11-30 11:52:26 +07:00 committed by GitHub
parent 522dd2d206
commit 97491c5cfb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 730 additions and 331 deletions

View file

@ -34,18 +34,18 @@
"@types/loader-utils": "^1.1.3", "@types/loader-utils": "^1.1.3",
"@types/lodash": "^4.14.149", "@types/lodash": "^4.14.149",
"@types/lodash.kebabcase": "^4.1.6", "@types/lodash.kebabcase": "^4.1.6",
"@types/node": "^12.12.11", "@types/node": "^12.12.14",
"@types/react": "^16.9.13", "@types/react": "^16.9.13",
"@types/react-dev-utils": "^9.0.1", "@types/react-dev-utils": "^9.0.1",
"@types/semver": "^6.2.0", "@types/semver": "^6.2.0",
"@types/shelljs": "^0.8.6", "@types/shelljs": "^0.8.6",
"@types/webpack": "^4.41.0", "@types/webpack": "^4.41.0",
"@types/webpack-dev-server": "^3.4.0", "@types/webpack-dev-server": "^3.9.0",
"@types/webpack-merge": "^4.1.5", "@types/webpack-merge": "^4.1.5",
"babel-eslint": "^10.0.3", "babel-eslint": "^10.0.3",
"enzyme": "^3.10.0", "enzyme": "^3.10.0",
"enzyme-adapter-react-16": "^1.15.1", "enzyme-adapter-react-16": "^1.15.1",
"eslint": "^6.7.0", "eslint": "^6.7.1",
"eslint-config-airbnb": "^18.0.1", "eslint-config-airbnb": "^18.0.1",
"eslint-config-prettier": "^6.7.0", "eslint-config-prettier": "^6.7.0",
"eslint-plugin-header": "^3.0.0", "eslint-plugin-header": "^3.0.0",
@ -57,7 +57,7 @@
"jest": "^24.9.0", "jest": "^24.9.0",
"lerna": "^3.19.0", "lerna": "^3.19.0",
"lerna-changelog": "^0.8.3", "lerna-changelog": "^0.8.3",
"lint-staged": "^9.4.3", "lint-staged": "^9.5.0",
"prettier": "^1.19.1", "prettier": "^1.19.1",
"react": "^16.8.4", "react": "^16.8.4",
"react-dom": "^16.8.4", "react-dom": "^16.8.4",

View file

@ -18,7 +18,7 @@
"dependencies": { "dependencies": {
"@docusaurus/mdx-loader": "^2.0.0-alpha.36", "@docusaurus/mdx-loader": "^2.0.0-alpha.36",
"@docusaurus/utils": "^2.0.0-alpha.36", "@docusaurus/utils": "^2.0.0-alpha.36",
"execa": "^3.3.0", "execa": "^3.4.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"globby": "^10.0.1", "globby": "^10.0.1",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",

View file

@ -73,7 +73,15 @@ export interface LoadContext {
baseUrl: string; baseUrl: string;
} }
export interface Props extends LoadContext { export interface InjectedHtmlTags {
headTags: string;
preBodyTags: string;
postBodyTags: string;
}
export type HtmlTags = string | HtmlTagObject | (string | HtmlTagObject)[];
export interface Props extends LoadContext, InjectedHtmlTags {
routesPaths: string[]; routesPaths: string[];
plugins: Plugin<any>[]; plugins: Plugin<any>[];
} }
@ -104,6 +112,11 @@ export interface Plugin<T> {
getPathsToWatch?(): string[]; getPathsToWatch?(): string[];
getClientModules?(): string[]; getClientModules?(): string[];
extendCli?(cli: Command): void; extendCli?(cli: Command): void;
injectHtmlTags?(): {
headTags?: HtmlTags;
preBodyTags?: HtmlTags;
postBodyTags?: HtmlTags;
};
} }
export type PluginConfig = [string, Object] | [string] | string; export type PluginConfig = [string, Object] | [string] | string;
@ -152,3 +165,21 @@ export interface ConfigureWebpackUtils {
getCacheLoader: (isServer: boolean, cacheOptions?: {}) => Loader | null; getCacheLoader: (isServer: boolean, cacheOptions?: {}) => Loader | null;
getBabelLoader: (isServer: boolean, babelOptions?: {}) => Loader; getBabelLoader: (isServer: boolean, babelOptions?: {}) => Loader;
} }
interface HtmlTagObject {
/**
* Attributes of the html tag
* E.g. `{'disabled': true, 'value': 'demo', 'rel': 'preconnect'}`
*/
attributes?: {
[attributeName: string]: string | boolean;
};
/**
* The tag name e.g. `div`, `script`, `link`, `meta`
*/
tagName: string;
/**
* The inner HTML
*/
innerHTML?: string;
}

View file

@ -55,6 +55,7 @@
"express": "^4.17.1", "express": "^4.17.1",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"globby": "^10.0.1", "globby": "^10.0.1",
"html-tags": "^3.1.0",
"html-webpack-plugin": "^4.0.0-beta.11", "html-webpack-plugin": "^4.0.0-beta.11",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
"lodash": "^4.17.15", "lodash": "^4.17.15",
@ -75,7 +76,7 @@
"semver": "^6.3.0", "semver": "^6.3.0",
"shelljs": "^0.8.3", "shelljs": "^0.8.3",
"std-env": "^2.2.1", "std-env": "^2.2.1",
"style-loader": "^1.0.0", "style-loader": "^1.0.1",
"terser-webpack-plugin": "^2.2.1", "terser-webpack-plugin": "^2.2.1",
"wait-file": "^1.0.5", "wait-file": "^1.0.5",
"webpack": "^4.41.2", "webpack": "^4.41.2",

View file

@ -22,7 +22,7 @@ import ssrTemplate from './templates/ssr.html.template';
// Renderer for static-site-generator-webpack-plugin (async rendering via promises) // Renderer for static-site-generator-webpack-plugin (async rendering via promises)
export default async function render(locals) { export default async function render(locals) {
const {routesLocation} = locals; const {routesLocation, headTags, preBodyTags, postBodyTags} = locals;
const location = routesLocation[locals.path]; const location = routesLocation[locals.path];
await preload(routes, location); await preload(routes, location);
const modules = new Set(); const modules = new Set();
@ -76,6 +76,9 @@ export default async function render(locals) {
chunkManifestScript, chunkManifestScript,
htmlAttributes: htmlAttributes || '', htmlAttributes: htmlAttributes || '',
bodyAttributes: bodyAttributes || '', bodyAttributes: bodyAttributes || '',
headTags,
preBodyTags,
postBodyTags,
metaAttributes, metaAttributes,
scripts, scripts,
stylesheets, stylesheets,

View file

@ -5,8 +5,13 @@
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="generator" content="Docusaurus"> <meta name="generator" content="Docusaurus">
<title><%= htmlWebpackPlugin.options.title %></title> <title><%= htmlWebpackPlugin.options.title %></title>
<%= htmlWebpackPlugin.options.headTags %>
<%= htmlWebpackPlugin.tags.headTags %>
</head> </head>
<body> <body>
<%= htmlWebpackPlugin.options.preBodyTags %>
<div id="__docusaurus"></div> <div id="__docusaurus"></div>
<%= htmlWebpackPlugin.tags.bodyTags %>
<%= htmlWebpackPlugin.options.postBodyTags %>
</body> </body>
</html> </html>

View file

@ -12,6 +12,7 @@ module.exports = `
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<meta name="generator" content="Docusaurus"> <meta name="generator" content="Docusaurus">
<%- headTags %>
<%- chunkManifestScript %> <%- chunkManifestScript %>
<% metaAttributes.forEach((metaAttribute) => { %> <% metaAttributes.forEach((metaAttribute) => { %>
<%- metaAttribute %> <%- metaAttribute %>
@ -21,12 +22,14 @@ module.exports = `
<% }); %> <% }); %>
</head> </head>
<body <%- bodyAttributes %>> <body <%- bodyAttributes %>>
<%- preBodyTags %>
<div id="__docusaurus"> <div id="__docusaurus">
<%- appHtml %> <%- appHtml %>
</div> </div>
<% scripts.forEach((script) => { %> <% scripts.forEach((script) => { %>
<script type="text/javascript" src="<%= baseUrl %><%= script %>"></script> <script type="text/javascript" src="<%= baseUrl %><%= script %>"></script>
<% }); %> <% }); %>
<%- postBodyTags %>
</body> </body>
</html> </html>
`; `;

View file

@ -78,7 +78,7 @@ export async function start(
const protocol: string = process.env.HTTPS === 'true' ? 'https' : 'http'; const protocol: string = process.env.HTTPS === 'true' ? 'https' : 'http';
const port: number = await getPort(cliOptions.port); const port: number = await getPort(cliOptions.port);
const host: string = getHost(cliOptions.host); const host: string = getHost(cliOptions.host);
const {baseUrl} = props; const {baseUrl, headTags, preBodyTags, postBodyTags} = props;
const urls = prepareUrls(protocol, host, port); const urls = prepareUrls(protocol, host, port);
const openUrl = normalizeUrl([urls.localUrlForBrowser, baseUrl]); const openUrl = normalizeUrl([urls.localUrlForBrowser, baseUrl]);
@ -90,8 +90,13 @@ export async function start(
__dirname, __dirname,
'../client/templates/index.html.template.ejs', '../client/templates/index.html.template.ejs',
), ),
// so we can define the position where the scripts are injected
inject: false,
filename: 'index.html', filename: 'index.html',
title: siteConfig.title, title: siteConfig.title,
headTags,
preBodyTags,
postBodyTags,
}), }),
// This is necessary to emit hot updates for webpack-dev-server // This is necessary to emit hot updates for webpack-dev-server
new HotModuleReplacementPlugin(), new HotModuleReplacementPlugin(),

View file

@ -0,0 +1,12 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
module.exports = function() {
return {
name: 'plugin-empty',
};
};

View file

@ -0,0 +1,26 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
module.exports = function() {
return {
name: 'plugin-headTags-only',
injectHtmlTags() {
return {
headTags: [
{
tagName: 'link',
attributes: {
rel: 'preconnect',
href: 'www.google-analytics.com',
},
},
`<meta name="generator" content="docusaurus">`,
],
};
},
};
};

View file

@ -0,0 +1,22 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
module.exports = function() {
return {
name: 'plugin-postBody-tags',
injectHtmlTags() {
return {
postBodyTags: [
{
tagName: 'div',
innerHTML: 'Test content',
},
],
};
},
};
};

View file

@ -0,0 +1,23 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
module.exports = function() {
return {
name: 'plugin-preBodyTags',
injectHtmlTags() {
return {
preBodyTags: {
tagName: 'script',
attributes: {
type: 'text/javascript',
},
innerHTML: 'window.foo = null;',
},
};
},
};
};

View file

@ -0,0 +1,122 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import {htmlTagObjectToString} from '../htmlTags';
describe('htmlTagObjectToString', () => {
test('simple html tag', () => {
expect(
htmlTagObjectToString({
tagName: 'script',
attributes: {
type: 'text/javascript',
src:
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
async: true,
},
}),
).toMatchInlineSnapshot(
`"<script type=\\"text/javascript\\" src=\\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js\\" async></script>"`,
);
expect(
htmlTagObjectToString({
tagName: 'link',
attributes: {
rel: 'preconnect',
href: 'www.google-analytics.com',
},
}),
).toMatchInlineSnapshot(
`"<link rel=\\"preconnect\\" href=\\"www.google-analytics.com\\">"`,
);
expect(
htmlTagObjectToString({
tagName: 'div',
attributes: {
style: 'background-color:lightblue',
},
innerHTML: 'Lightblue color here',
}),
).toMatchInlineSnapshot(
`"<div style=\\"background-color:lightblue\\">Lightblue color here</div>"`,
);
expect(
htmlTagObjectToString({
tagName: 'div',
innerHTML: 'Test',
}),
).toMatchInlineSnapshot(`"<div>Test</div>"`);
});
test('valid html void tag', () => {
expect(
htmlTagObjectToString({
tagName: 'meta',
attributes: {
name: 'generator',
content: 'Docusaurus',
},
}),
).toMatchInlineSnapshot(
`"<meta name=\\"generator\\" content=\\"Docusaurus\\">"`,
);
expect(
htmlTagObjectToString({
tagName: 'img',
attributes: {
src: '/img/docusaurus.png',
alt: 'Docusaurus logo',
height: '42',
width: '42',
},
}),
).toMatchInlineSnapshot(
`"<img src=\\"/img/docusaurus.png\\" alt=\\"Docusaurus logo\\" height=\\"42\\" width=\\"42\\">"`,
);
});
test('invalid tag', () => {
expect(() =>
htmlTagObjectToString({
tagName: 'endiliey',
attributes: {
this: 'is invalid',
},
}),
).toThrowErrorMatchingInlineSnapshot(
`"Error loading {\\"tagName\\":\\"endiliey\\",\\"attributes\\":{\\"this\\":\\"is invalid\\"}}, \\"endiliey\\" is not a valid HTML tags"`,
);
});
test('invalid tagName', () => {
expect(() =>
htmlTagObjectToString({
tagName: true,
}),
).toThrowErrorMatchingInlineSnapshot(
`"{\\"tagName\\":true} is not a valid HTML tag object. \\"tagName\\" must be defined as a string"`,
);
});
test('invalid html tag object', () => {
expect(() =>
htmlTagObjectToString('fooofofoofo'),
).toThrowErrorMatchingInlineSnapshot(
`"\\"fooofofoofo\\" is not a valid HTML tag object"`,
);
expect(() =>
htmlTagObjectToString(null),
).toThrowErrorMatchingInlineSnapshot(
`"\\"null\\" is not a valid HTML tag object"`,
);
});
});

View file

@ -0,0 +1,94 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import path from 'path';
import {loadHtmlTags} from '../index';
const pluginEmpty = require('./__fixtures__/plugin-empty');
const pluginPreBodyTags = require('./__fixtures__/plugin-preBodyTags');
const pluginHeadTags = require('./__fixtures__/plugin-headTags');
const pluginPostBodyTags = require('./__fixtures__/plugin-postBodyTags');
describe('loadHtmlTags', () => {
test('empty plugin', () => {
const htmlTags = loadHtmlTags([pluginEmpty()]);
expect(htmlTags).toMatchInlineSnapshot(`
Object {
"headTags": "",
"postBodyTags": "",
"preBodyTags": "",
}
`);
});
test('only inject headTags', () => {
const htmlTags = loadHtmlTags([pluginHeadTags()]);
expect(htmlTags).toMatchInlineSnapshot(`
Object {
"headTags": "<link rel=\\"preconnect\\" href=\\"www.google-analytics.com\\">
<meta name=\\"generator\\" content=\\"docusaurus\\">",
"postBodyTags": "",
"preBodyTags": "",
}
`);
});
test('only inject preBodyTags', () => {
const htmlTags = loadHtmlTags([pluginPreBodyTags()]);
expect(htmlTags).toMatchInlineSnapshot(`
Object {
"headTags": "",
"postBodyTags": "",
"preBodyTags": "<script type=\\"text/javascript\\">window.foo = null;</script>",
}
`);
});
test('only inject postBodyTags', () => {
const htmlTags = loadHtmlTags([pluginPostBodyTags()]);
expect(htmlTags).toMatchInlineSnapshot(`
Object {
"headTags": "",
"postBodyTags": "<div>Test content</div>",
"preBodyTags": "",
}
`);
});
test('multiple plugins that inject different part of html tags', () => {
const htmlTags = loadHtmlTags([
pluginHeadTags(),
pluginPostBodyTags(),
pluginPreBodyTags(),
]);
expect(htmlTags).toMatchInlineSnapshot(`
Object {
"headTags": "<link rel=\\"preconnect\\" href=\\"www.google-analytics.com\\">
<meta name=\\"generator\\" content=\\"docusaurus\\">",
"postBodyTags": "<div>Test content</div>",
"preBodyTags": "<script type=\\"text/javascript\\">window.foo = null;</script>",
}
`);
});
test('multiple plugins that might/might not inject html tags', () => {
const htmlTags = loadHtmlTags([
pluginEmpty(),
pluginHeadTags(),
pluginPostBodyTags(),
]);
expect(htmlTags).toMatchInlineSnapshot(`
Object {
"headTags": "<link rel=\\"preconnect\\" href=\\"www.google-analytics.com\\">
<meta name=\\"generator\\" content=\\"docusaurus\\">",
"postBodyTags": "<div>Test content</div>",
"preBodyTags": "",
}
`);
});
});

View file

@ -0,0 +1,52 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import _ from 'lodash';
import {HtmlTagObject} from '@docusaurus/types';
import htmlTags from 'html-tags';
import voidHtmlTags from 'html-tags/void';
function assertIsHtmlTagObject(val: any): asserts val is HtmlTagObject {
if (!_.isPlainObject(val)) {
throw new Error(`"${val}" is not a valid HTML tag object`);
}
if (typeof val.tagName !== 'string') {
throw new Error(
`${JSON.stringify(
val,
)} is not a valid HTML tag object. "tagName" must be defined as a string`,
);
}
}
export function htmlTagObjectToString(tagDefinition: any): string {
assertIsHtmlTagObject(tagDefinition);
if (htmlTags.indexOf(tagDefinition.tagName) === -1) {
throw new Error(
`Error loading ${JSON.stringify(tagDefinition)}, "${
tagDefinition.tagName
}" is not a valid HTML tags`,
);
}
const isVoidTag = voidHtmlTags.indexOf(tagDefinition.tagName) !== -1;
const tagAttributes = tagDefinition.attributes || {};
const attributes = Object.keys(tagAttributes)
.filter(attributeName => tagAttributes[attributeName] !== false)
.map(attributeName => {
if (tagAttributes[attributeName] === true) {
return attributeName;
}
return attributeName + '="' + tagAttributes[attributeName] + '"';
});
return (
'<' +
[tagDefinition.tagName].concat(attributes).join(' ') +
'>' +
((!isVoidTag && tagDefinition.innerHTML) || '') +
(isVoidTag ? '' : '</' + tagDefinition.tagName + '>')
);
}

View file

@ -0,0 +1,51 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import _ from 'lodash';
import {htmlTagObjectToString} from './htmlTags';
import {
Plugin,
InjectedHtmlTags,
HtmlTagObject,
HtmlTags,
} from '@docusaurus/types';
function toString(val: string | HtmlTagObject): string {
return typeof val === 'string' ? val : htmlTagObjectToString(val);
}
export function createHtmlTagsString(tags: HtmlTags): string {
return _.isArray(tags) ? tags.map(toString).join('\n') : toString(tags);
}
export function loadHtmlTags(plugins: Plugin<any>[]): InjectedHtmlTags {
const htmlTags = plugins.reduce(
(acc, plugin) => {
if (!plugin.injectHtmlTags) {
return acc;
}
const {headTags, preBodyTags, postBodyTags} = plugin.injectHtmlTags();
return {
headTags: headTags
? acc.headTags + '\n' + createHtmlTagsString(headTags)
: acc.headTags,
preBodyTags: preBodyTags
? acc.preBodyTags + '\n' + createHtmlTagsString(preBodyTags)
: acc.preBodyTags,
postBodyTags: postBodyTags
? acc.postBodyTags + '\n' + createHtmlTagsString(postBodyTags)
: acc.postBodyTags,
};
},
{headTags: '', preBodyTags: '', postBodyTags: ''},
);
return {
headTags: htmlTags.headTags.trim(),
preBodyTags: htmlTags.preBodyTags.trim(),
postBodyTags: htmlTags.postBodyTags.trim(),
};
}

View file

@ -26,6 +26,7 @@ import {
PluginConfig, PluginConfig,
Props, Props,
} from '@docusaurus/types'; } from '@docusaurus/types';
import {loadHtmlTags} from './html-tags';
export function loadContext(siteDir: string): LoadContext { export function loadContext(siteDir: string): LoadContext {
const generatedFilesDir: string = path.resolve( const generatedFilesDir: string = path.resolve(
@ -103,6 +104,9 @@ export async function load(siteDir: string): Promise<Props> {
.join('\n')}\n];\n`, .join('\n')}\n];\n`,
); );
// Load extra head & body html tags
const {headTags, preBodyTags, postBodyTags} = loadHtmlTags(plugins);
// Routing // Routing
const { const {
registry, registry,
@ -148,6 +152,9 @@ ${Object.keys(registry)
generatedFilesDir, generatedFilesDir,
routesPaths, routesPaths,
plugins, plugins,
headTags,
preBodyTags,
postBodyTags,
}; };
return props; return props;

View file

@ -16,7 +16,14 @@ import WaitPlugin from './plugins/WaitPlugin';
import LogPlugin from './plugins/LogPlugin'; import LogPlugin from './plugins/LogPlugin';
export function createServerConfig(props: Props): Configuration { export function createServerConfig(props: Props): Configuration {
const {baseUrl, routesPaths, generatedFilesDir} = props; const {
baseUrl,
routesPaths,
generatedFilesDir,
headTags,
preBodyTags,
postBodyTags,
} = props;
const config = createBaseConfig(props, true); const config = createBaseConfig(props, true);
const routesLocation = {}; const routesLocation = {};
@ -51,6 +58,9 @@ export function createServerConfig(props: Props): Configuration {
baseUrl, baseUrl,
generatedFilesDir, generatedFilesDir,
routesLocation, routesLocation,
headTags,
preBodyTags,
postBodyTags,
}, },
paths: ssgPaths, paths: ssgPaths,
}), }),

View file

@ -172,18 +172,18 @@ module.exports = function(context, options, utils) {
Called when a (production) build finishes. Called when a (production) build finishes.
```ts ```ts
interface LoadContext { type Props = {
siteDir: string; siteDir: string;
generatedFilesDir: string; generatedFilesDir: string;
siteConfig: DocusaurusConfig; siteConfig: DocusaurusConfig;
outDir: string; outDir: string;
baseUrl: string; baseUrl: string;
} headTags: string;
preBodyTags: string;
interface Props extends LoadContext { postBodyTags: string;
routesPaths: string[]; routesPaths: string[];
plugins: Plugin<any>[]; plugins: Plugin<any>[];
} };
``` ```
Example: Example:
@ -226,6 +226,72 @@ module.exports = function(context, options, utils) {
}; };
``` ```
## injectHtmlTags()
Inject head and/or body html tags to Docusaurus generated html.
```typescript
function injectHtmlTags(): {
headTags?: HtmlTags;
preBodyTags?: HtmlTags;
postBodyTags?: HtmlTags;
};
type HtmlTags = string | HtmlTagObject | (string | HtmlTagObject)[];
interface HtmlTagObject {
/**
* Attributes of the html tag
* E.g. `{'disabled': true, 'value': 'demo', 'rel': 'preconnect'}`
*/
attributes?: {
[attributeName: string]: string | boolean;
};
/**
* The tag name e.g. `div`, `script`, `link`, `meta`
*/
tagName: string;
/**
* The inner HTML
*/
innerHTML?: string;
}
```
Example:
```js {5-29}
// docusaurus-plugin/src/index.js
module.exports = function(context, options, utils) {
return {
name: 'docusaurus-plugin',
injectHtmlTags() {
return {
headTags: [
{
tagName: 'link',
attributes: {
rel: 'preconnect',
href: 'https://www.github.com',
},
},
],
preBodyTags: [
{
tagName: 'script',
attributes: {
charset: 'utf-8',
src: '/noflash.js'
},
},
],
postBodyTags: [`<div> This is post body </div>`],
};
},
};
};
```
## getThemePath() ## getThemePath()
Returns the path to the directory where the theme components can be found. When your users calls `swizzle`, `getThemePath` is called and its returned path is used to find your theme components. Returns the path to the directory where the theme components can be found. When your users calls `swizzle`, `getThemePath` is called and its returned path is used to find your theme components.
@ -351,6 +417,10 @@ module.exports = function(context, opts) {
extendCli(cli) { extendCli(cli) {
// Register an extra command to enhance the CLI of docusaurus // Register an extra command to enhance the CLI of docusaurus
}, },
injectHtmlTags() {
// Inject head and/or body html tags
},
}; };
}; };
``` ```

494
yarn.lock
View file

@ -725,7 +725,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.7.4" "@babel/helper-create-regexp-features-plugin" "^7.7.4"
"@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0"
"@babel/polyfill@^7.0.0", "@babel/polyfill@^7.7.0": "@babel/polyfill@^7.7.0":
version "7.7.0" version "7.7.0"
resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.7.0.tgz#e1066e251e17606ec7908b05617f9b7f8180d8f3" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.7.0.tgz#e1066e251e17606ec7908b05617f9b7f8180d8f3"
integrity sha512-/TS23MVvo34dFmf8mwCisCbWGrfhbiWZSwBo6HkADTBhUa2Q/jWltyY/tpofz/b6/RIhqaqQcquptCirqIhOaQ== integrity sha512-/TS23MVvo34dFmf8mwCisCbWGrfhbiWZSwBo6HkADTBhUa2Q/jWltyY/tpofz/b6/RIhqaqQcquptCirqIhOaQ==
@ -820,7 +820,7 @@
pirates "^4.0.0" pirates "^4.0.0"
source-map-support "^0.5.16" source-map-support "^0.5.16"
"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.4": "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4":
version "7.7.4" version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b"
integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==
@ -1160,24 +1160,26 @@
"@types/istanbul-reports" "^1.1.1" "@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^13.0.0" "@types/yargs" "^13.0.0"
"@jimp/bmp@^0.5.4": "@jimp/bmp@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.5.4.tgz#b7b375aa774f26154912569864d5466e71333ef1" resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.9.3.tgz#98eafc81674ce750f428ac9380007f1a4e90255e"
integrity sha512-P/ezH1FuoM3FwS0Dm2ZGkph4x5/rPBzFLEZor7KQkmGUnYEIEG4o0BUcAWFmJOp2HgzbT6O2SfrpJNBOcVACzQ== integrity sha512-wXZYccgGQAsIK8DZX0wZE3gbSd2mL2+eheSJMts6I5hQjxhVRZd1Gwu425nUQGzfKCOgKYTW0nLv7/8OoOTTkw==
dependencies: dependencies:
"@jimp/utils" "^0.5.0" "@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.9.3"
bmp-js "^0.1.0" bmp-js "^0.1.0"
core-js "^2.5.7" core-js "^3.4.1"
"@jimp/core@^0.5.4": "@jimp/core@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.5.4.tgz#69d2d9eef1a6a9d62127171e2688cf21bc0ee77c" resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.9.3.tgz#bffbf955c046569bf4b682b575228e31bb41e445"
integrity sha512-n3uvHy2ndUKItmbhnRO8xmU8J6KR+v6CQxO9sbeUDpSc3VXc1PkqrA8ZsCVFCjnDFcGBXL+MJeCTyQzq5W9Crw== integrity sha512-kB9lvst1QhgYOC963SAuPgv+DdVfxTProphrSffAAoo5eLeQab/Ca3ZUeX1E/SnLSr+NGVnNCd8c9gyuKDiENg==
dependencies: dependencies:
"@jimp/utils" "^0.5.0" "@babel/runtime" "^7.7.2"
"@jimp/utils" "^0.9.3"
any-base "^1.1.0" any-base "^1.1.0"
buffer "^5.2.0" buffer "^5.2.0"
core-js "^2.5.7" core-js "^3.4.1"
exif-parser "^0.1.12" exif-parser "^0.1.12"
file-type "^9.0.0" file-type "^9.0.0"
load-bmfont "^1.3.1" load-bmfont "^1.3.1"
@ -1186,231 +1188,84 @@
pixelmatch "^4.0.2" pixelmatch "^4.0.2"
tinycolor2 "^1.4.1" tinycolor2 "^1.4.1"
"@jimp/custom@^0.5.4": "@jimp/custom@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.5.4.tgz#393338efbf15d158ecf6639cb1b196c70411fddd" resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.9.3.tgz#b49dfe1d6b24e62fd4101a7db77104024c8d97e8"
integrity sha512-tLfyJoyouDl2J3RPFGfDzTtE+4S8ljqJUmLzy/cmx1n7+xS5TpLPdPskp7UaeAfNTqdF4CNAm94KYoxTZdj2mg== integrity sha512-2E7yabQMeqjcK8+ZFu3Ja5cWyrB0zv/pmzNSDg/BBPJ59HE0fj/qcERAz6VklcjHUYRUfmE5uODsb+4DE0o/YQ==
dependencies: dependencies:
"@jimp/core" "^0.5.4" "@babel/runtime" "^7.7.2"
core-js "^2.5.7" "@jimp/core" "^0.9.3"
core-js "^3.4.1"
"@jimp/gif@^0.5.0": "@jimp/gif@^0.9.3":
version "0.5.0" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.5.0.tgz#7543870b3d744c9758da76ca43fac4ee48fd6a00" resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.9.3.tgz#b2b1a519092f94a913a955f252996f9a968930db"
integrity sha512-HVB4c7b8r/yCpjhCjVNPRFLuujTav5UPmcQcFJjU6aIxmne6e29rAjRJEv3UMamHDGSu/96PzOsPZBO5U+ZGww== integrity sha512-DshKgMQ8lXorI/xTRyeRkZqZ3JqgnL2aGYAhx0SkAunyHgXji27chmrOGj/6KVDBucrDf/6mSexnSoUDnlWrfA==
dependencies: dependencies:
"@jimp/utils" "^0.5.0" "@babel/runtime" "^7.7.2"
core-js "^2.5.7" "@jimp/utils" "^0.9.3"
core-js "^3.4.1"
omggif "^1.0.9" omggif "^1.0.9"
"@jimp/jpeg@^0.5.4": "@jimp/jpeg@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.5.4.tgz#ff52669f801e9d82041ba6322ee781c344e75241" resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.9.3.tgz#a759cb3bccf3cb163166873b9bdc0c949c5991b5"
integrity sha512-YaPWm+YSGCThNE/jLMckM3Qs6uaMxd/VsHOnEaqu5tGA4GFbfVaWHjKqkNGAFuiNV+HdgKlNcCOF3of+elvzqQ== integrity sha512-AJzcTJXfN9BHtpzAbICwR3+GoH0pSr6OYXbAS6yuKwz+xVn9UHrEjQb74CIzIRqrT/VWcIKg29cMQxgokzWY7w==
dependencies: dependencies:
"@jimp/utils" "^0.5.0" "@babel/runtime" "^7.7.2"
core-js "^2.5.7" "@jimp/utils" "^0.9.3"
core-js "^3.4.1"
jpeg-js "^0.3.4" jpeg-js "^0.3.4"
"@jimp/plugin-blit@^0.5.4": "@jimp/plugin-resize@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.5.4.tgz#8c4f46e00c0a4ca9d5c592713de7575528485e59" resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.9.3.tgz#916abd57c4f9b426984354c77555ade1efda7a82"
integrity sha512-WqDYOugv76hF1wnKy7+xPGf9PUbcm9vPW28/jHWn1hjbb2GnusJ2fVEFad76J/1SPfhrQ2Uebf2QCWJuLmOqZg== integrity sha512-YzqVE8QoDIZpVuI52v+WejwEjEEiJfNFviQfprfm5af7uSSseZgDw1sJ0koqAu+liMSY+Ewp79v2SDrKoJKqtg==
dependencies: dependencies:
"@jimp/utils" "^0.5.0" "@babel/runtime" "^7.7.2"
core-js "^2.5.7" "@jimp/utils" "^0.9.3"
core-js "^3.4.1"
"@jimp/plugin-blur@^0.5.0": "@jimp/png@^0.9.3":
version "0.5.0" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.5.0.tgz#c8222bdae8eb4cc86613c0adbcb26a92829739a2" resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.9.3.tgz#5c1bbb89b32e2332891a13efdb423e87287a8321"
integrity sha512-5k0PXCA1RTJdITL7yMAyZ5tGQjKLHqFvwdXj/PCoBo5PuMyr0x6qfxmQEySixGk/ZHdDxMi80vYxHdKHjNNgjg== integrity sha512-LJXUemDTSbTGAGEp9hNQH0uTRSB8gYeE6FsfT3M00oZincu6/WzDzl0P8E95rMjNxZqAihdTyOP3+kcrbbqX+w==
dependencies: dependencies:
"@jimp/utils" "^0.5.0" "@babel/runtime" "^7.7.2"
core-js "^2.5.7" "@jimp/utils" "^0.9.3"
core-js "^3.4.1"
"@jimp/plugin-color@^0.5.5":
version "0.5.5"
resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.5.5.tgz#68f9652d5065d3380a9967911a7e529325d230d6"
integrity sha512-hWeOqNCmLguGYLhSvBrpfCvlijsMEVaLZAOod62s1rzWnujozyKOzm2eZe+W3To6mHbp5RGJNVrIwHBWMab4ug==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
tinycolor2 "^1.4.1"
"@jimp/plugin-contain@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.5.4.tgz#1dc258db36d50e23400e0644b7f2694fd74fbf60"
integrity sha512-8YJh4FI3S69unri0nJsWeqVLeVGA77N2R0Ws16iSuCCD/5UnWd9FeWRrSbKuidBG6TdMBaG2KUqSYZeHeH9GOQ==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-cover@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.5.4.tgz#a086243b151db9eef09e657fbe8bc3ef8683662e"
integrity sha512-2Rur7b44WiDDgizUI2M2uYWc1RmfhU5KjKS1xXruobjQ0tXkf5xlrPXSushq0hB6Ne0Ss6wv0+/6eQ8WeGHU2w==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-crop@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.5.4.tgz#124cf52aa07e36c7a33f39e2e86e78166c300ca7"
integrity sha512-6t0rqn4VazquGk48tO6hFBrQ+nkvC+A1RnR6UM/m8ZtG2/yjpwF0MXcpgJI1Fb+a4Ug7BY1fu2GPcZOhnAVK/g==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-displace@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.5.0.tgz#cb75d8588bdee45c1bdb1bec2323705d0e53d060"
integrity sha512-Bec7SQvnmKia4hOXEDjeNVx7vo/1bWqjuV6NO8xbNQcAO3gaCl91c9FjMDhsfAVb0Ou6imhbIuFPrLxorXsecQ==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-dither@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.5.0.tgz#0f1f6b7dcd5aba8f908bbd4b60685fc29cc6a3ed"
integrity sha512-We2WJQsD/Lm8oqBFp/vUv9/5r2avyenL+wNNu/s2b1HqA5O4sPGrjHy9K6vIov0NroQGCQ3bNznLkTmjiHKBcg==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-flip@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.5.0.tgz#4a973c9c4bdc6dbcc7da66204a2bb2b12feb9381"
integrity sha512-D/ehBQxLMNR7oNd80KXo4tnSET5zEm5mR70khYOTtTlfti/DlLp3qOdjPOzfLyAdqO7Ly4qCaXrIsnia+pfPrA==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-gaussian@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.5.0.tgz#02c9f07516108e01ba0f2938289b08e6e865c2c9"
integrity sha512-Ln4kgxblv0/YzLBDb/J8DYPLhDzKH87Y8yHh5UKv3H+LPKnLaEG3L4iKTE9ivvdocnjmrtTFMYcWv2ERSPeHcg==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-invert@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.5.0.tgz#4496d2d67ab498c8fa3e89c4b6dd5892e7f14b9b"
integrity sha512-/vyKeIi3T7puf+8ruWovTjzDC585EnTwJ+lGOOUYiNPsdn4JDFe1B3xd+Ayv9aCQbXDIlPElZaM9vd/+wqDiIQ==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-mask@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.5.4.tgz#ac4c2625e328818da1443c92bcb9cabb537c74ba"
integrity sha512-mUJ04pCrUWaJGXPjgoVbzhIQB8cVobj2ZEFlGO3BEAjyylYMrdJlNlsER8dd7UuJ2L/a4ocWtFDdsnuicnBghQ==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-normalize@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.5.4.tgz#d60aeb637bcaecadf654c9621e291d6eed12fa19"
integrity sha512-Q5W0oEz9wxsjuhvHAJynI/OqXZcmqEAuRONQId7Aw5ulCXSOg9C4y2a67EO7aZAt55T+zMVxI9UpVUpzVvO6hw==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-print@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.5.4.tgz#00524a7424a4e12a17764d349485dd1120a43728"
integrity sha512-DOZr5TY9WyMWFBD37oz7KpTEBVioFIHQF/gH5b3O5jjFyj4JPMkw7k3kVBve9lIrzIYrvLqe0wH59vyAwpeEFg==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
load-bmfont "^1.4.0"
"@jimp/plugin-resize@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.5.4.tgz#c9b2c4949ee080df3fa2ca587539e2ce8588b8af"
integrity sha512-lXNprNAT0QY1D1vG/1x6urUTlWuZe2dfL29P81ApW2Yfcio471+oqo45moX5FLS0q24xU600g7cHGf2/TzqSfA==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-rotate@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.5.4.tgz#6c4c560779bc3ebf291db9a5095158d32a2a4af3"
integrity sha512-SIdUpMc8clObMchy8TnjgHgcXEQM992z5KavgiuOnCuBlsmSHtE3MrXTOyMW0Dn3gqapV9Y5vygrLm/BVtCCsg==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugin-scale@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.5.0.tgz#095f937e5a4887481b3074f5cd6a144d8f4f815e"
integrity sha512-5InIOr3cNtrS5aQ/uaosNf28qLLc0InpNGKFmGFTv8oqZqLch6PtDTjDBZ1GGWsPdA/ljy4Qyy7mJO1QBmgQeQ==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
"@jimp/plugins@^0.5.5":
version "0.5.5"
resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.5.5.tgz#e97fa368d69ad7718d5a2a9b6ffa8e6cc1e4264d"
integrity sha512-9oF6LbSM/K7YkFCcxaPaD8NUkL/ZY8vT8NIGfQ/NpX+tKQtcsLHcRavHpUC+M1xXShv/QGx9OdBV/jgiu82QYg==
dependencies:
"@jimp/plugin-blit" "^0.5.4"
"@jimp/plugin-blur" "^0.5.0"
"@jimp/plugin-color" "^0.5.5"
"@jimp/plugin-contain" "^0.5.4"
"@jimp/plugin-cover" "^0.5.4"
"@jimp/plugin-crop" "^0.5.4"
"@jimp/plugin-displace" "^0.5.0"
"@jimp/plugin-dither" "^0.5.0"
"@jimp/plugin-flip" "^0.5.0"
"@jimp/plugin-gaussian" "^0.5.0"
"@jimp/plugin-invert" "^0.5.0"
"@jimp/plugin-mask" "^0.5.4"
"@jimp/plugin-normalize" "^0.5.4"
"@jimp/plugin-print" "^0.5.4"
"@jimp/plugin-resize" "^0.5.4"
"@jimp/plugin-rotate" "^0.5.4"
"@jimp/plugin-scale" "^0.5.0"
core-js "^2.5.7"
timm "^1.6.1"
"@jimp/png@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.5.4.tgz#4ed02435ab8ac219b618e9578dfd60626b3b5dd4"
integrity sha512-J2NU7368zihF1HUZdmpXsL/Hhyf+I3ubmK+6Uz3Uoyvtk1VS7dO3L0io6fJQutfWmPZ4bvu6Ry022oHjbi6QCA==
dependencies:
"@jimp/utils" "^0.5.0"
core-js "^2.5.7"
pngjs "^3.3.3" pngjs "^3.3.3"
"@jimp/tiff@^0.5.4": "@jimp/tiff@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.5.4.tgz#ce5370283eba390ff32b6fd86b9259d7cf3e2315" resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.9.3.tgz#a4498c0616fb24034f5512b159b75b0aea389e9c"
integrity sha512-hr7Zq3eWjAZ+itSwuAObIWMRNv7oHVM3xuEDC2ouP7HfE7woBtyhCyfA7u12KlgtM57gKWeogXqTlewRGVzx6g== integrity sha512-w9H6dT+GDHN//Srsv27JhRn7R2byzUahOGfFw7KpIn95jg0ogcxjKTo/RAGQC56sr4U092e4Npl7E85Lt934WQ==
dependencies: dependencies:
core-js "^2.5.7" "@babel/runtime" "^7.7.2"
core-js "^3.4.1"
utif "^2.0.1" utif "^2.0.1"
"@jimp/types@^0.5.4": "@jimp/types@^0.9.3":
version "0.5.4" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.5.4.tgz#c312e415ec9c4a35770e89b9eee424a96be60ab8" resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.9.3.tgz#75337245a1a8c7c84a414beca3cfeded338c0ef1"
integrity sha512-nbZXM6TsdpnYHIBd8ZuoxGpvmxc2SqiggY30/bhOP/VJQoDBzm2v/20Ywz5M0snpIK2SdYG52eZPNjfjqUP39w== integrity sha512-hUJKoT2IhnbO/trxNWzN19n8g+p7aKbM1R+71n4wMZnD41PzrVtz+sBBCdB+JCjBJs/i7fJt4d9z0i3Xe8m7Zw==
dependencies: dependencies:
"@jimp/bmp" "^0.5.4" "@babel/runtime" "^7.7.2"
"@jimp/gif" "^0.5.0" "@jimp/bmp" "^0.9.3"
"@jimp/jpeg" "^0.5.4" "@jimp/gif" "^0.9.3"
"@jimp/png" "^0.5.4" "@jimp/jpeg" "^0.9.3"
"@jimp/tiff" "^0.5.4" "@jimp/png" "^0.9.3"
core-js "^2.5.7" "@jimp/tiff" "^0.9.3"
core-js "^3.4.1"
timm "^1.6.1" timm "^1.6.1"
"@jimp/utils@^0.5.0": "@jimp/utils@^0.9.3":
version "0.5.0" version "0.9.3"
resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.5.0.tgz#ecb33259c75238053d6c7706a3e91f657dbabf91" resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.9.3.tgz#fd7af0d1138febbeacc841be4b802218444ce088"
integrity sha512-7H9RFVU+Li2XmEko0GGyzy7m7JjSc7qa+m8l3fUzYg2GtwASApjKF/LSG2AUQCUmDKFLdfIEVjxvKvZUJFEmpw== integrity sha512-9D2Of6BcjYONtl77YfmU2y5aRMLe0/O2e2aQvfCxdNwD33jRdwNdN4i3m73dpiClNquApIjL4nYGhTixA4UstA==
dependencies: dependencies:
core-js "^2.5.7" "@babel/runtime" "^7.7.2"
core-js "^3.4.1"
"@lerna/add@3.19.0": "@lerna/add@3.19.0":
version "3.19.0" version "3.19.0"
@ -2322,9 +2177,9 @@
"@types/json-schema" "*" "@types/json-schema" "*"
"@types/estree@*": "@types/estree@*":
version "0.0.39" version "0.0.40"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.40.tgz#0e6cb9b9bbd098031fa19e4b4e8131bc70e5de13"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== integrity sha512-p3KZgMto/JyxosKGmnLDJ/dG5wf+qTRMUjHJcspC2oQKa4jP7mz+tv0ND56lLBu3ojHlhzY33Ol+khLyNmilkA==
"@types/events@*": "@types/events@*":
version "3.0.0" version "3.0.0"
@ -2468,15 +2323,15 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*", "@types/node@>= 8", "@types/node@^12.12.11": "@types/node@*", "@types/node@>= 8", "@types/node@^12.12.14":
version "12.12.12" version "12.12.14"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.12.tgz#529bc3e73dbb35dd9e90b0a1c83606a9d3264bdb" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.14.tgz#1c1d6e3c75dba466e0326948d56e8bd72a1903d2"
integrity sha512-MGuvYJrPU0HUwqF7LqvIj50RZUX23Z+m583KBygKYUZLlZ88n6w28XRNJRJgsHukLEnLz6w6SvxZoLgbr5wLqQ== integrity sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==
"@types/node@^10.11.7": "@types/node@^10.11.7":
version "10.17.5" version "10.17.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.5.tgz#c1920150f7b90708a7d0f3add12a06bc9123c055" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.6.tgz#1aaabd6f6470a6ac3824ab1e94d731ca1326d93d"
integrity sha512-RElZIr/7JreF1eY6oD5RF3kpmdcreuQPjg5ri4oQ5g9sq7YWU8HkfB3eH8GwAwxf5OaCh0VPi7r4N/yoTGelrA== integrity sha512-0a2X6cgN3RdPBL2MIlR6Lt0KlM7fOFsutuXcdglcOq6WvLnYXgPQSh0Mx6tO1KCAE8MxbHSOSTWDoUxRq+l3DA==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.0" version "2.4.0"
@ -2577,10 +2432,10 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
"@types/webpack-dev-server@*", "@types/webpack-dev-server@^3.4.0": "@types/webpack-dev-server@*", "@types/webpack-dev-server@^3.9.0":
version "3.4.0" version "3.9.0"
resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.4.0.tgz#8e29afafb8238185c0d4e94fb544f0e12f0248e1" resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#e31096477a88b0e54968cbc0d688dac9ba2c5442"
integrity sha512-cNxiXfGnMxVgXOjmo/SQdsIX2Muan0A44AvPgVfz9y1PfWogOJGEy+/nFkrF/luvFxykJXT+fZYPpyuIGZtRZg== integrity sha512-4wXREDfUJmKTNcoaLLHjgsRHZhogIScXJPc5B6e5bYx16zd9H3WfM67w+mEgNaRxVCgb6YNnc8O2lX2IUn4zdQ==
dependencies: dependencies:
"@types/connect-history-api-fallback" "*" "@types/connect-history-api-fallback" "*"
"@types/express" "*" "@types/express" "*"
@ -2853,9 +2708,9 @@ acorn@^5.5.3:
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
acorn@^6.0.1, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.2.1: acorn@^6.0.1, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.2.1:
version "6.3.0" version "6.4.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784"
integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==
acorn@^7.1.0: acorn@^7.1.0:
version "7.1.0" version "7.1.0"
@ -3336,9 +3191,9 @@ aws-sign2@~0.7.0:
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.8.0: aws4@^1.8.0:
version "1.8.0" version "1.9.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==
axobject-query@^2.0.2: axobject-query@^2.0.2:
version "2.0.2" version "2.0.2"
@ -3582,9 +3437,9 @@ bluebird@3.0.5:
integrity sha1-L/nQfJs+2ynW0oD+B1KDZefs05I= integrity sha1-L/nQfJs+2ynW0oD+B1KDZefs05I=
bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.1: bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.1:
version "3.7.1" version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bmp-js@^0.1.0: bmp-js@^0.1.0:
version "0.1.0" version "0.1.0"
@ -4058,9 +3913,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001010: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001010:
version "1.0.30001011" version "1.0.30001012"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001011.tgz#0d6c4549c78c4a800bb043a83ca0cbe0aee6c6e1" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001012.tgz#653ec635e815b9e0fb801890923b0c2079eb34ec"
integrity sha512-h+Eqyn/YA6o6ZTqpS86PyRmNWOs1r54EBDcd2NTwwfsXQ8re1B38SnB+p2RKF8OUsyEIjeDU8XGec1RGO/wYCg== integrity sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg==
capture-exit@^2.0.0: capture-exit@^2.0.0:
version "2.0.0" version "2.0.0"
@ -4758,9 +4613,9 @@ copy-webpack-plugin@^5.0.5:
webpack-log "^2.0.0" webpack-log "^2.0.0"
core-js-compat@^3.1.1: core-js-compat@^3.1.1:
version "3.4.2" version "3.4.5"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.4.2.tgz#652fa7c54652b7f6586a893e37001df55ea2ac37" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.4.5.tgz#f072059c0b98ad490eacac082296cfe241af1b58"
integrity sha512-W0Aj+LM3EAxxjD0Kp2o4be8UlnxIZHNupBv2znqrheR4aY2nOn91794k/xoSp+SxqqriiZpTsSwBtZr60cbkwQ== integrity sha512-rYVvzvKJDKoefdAC+q6VP63vp5hMmeVONCi9pVUbU1qRrtVrmAk/nPhnRg+i+XFd775m1hpG2Yd5RY3X45ccuw==
dependencies: dependencies:
browserslist "^4.7.3" browserslist "^4.7.3"
semver "^6.3.0" semver "^6.3.0"
@ -4770,11 +4625,16 @@ core-js@^1.0.0:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
core-js@^2.4.1, core-js@^2.5.7, core-js@^2.6.5: core-js@^2.4.1, core-js@^2.6.5:
version "2.6.10" version "2.6.10"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==
core-js@^3.4.1:
version "3.4.5"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.5.tgz#3dda65611d95699b5eb7742ea451ea052d37aa65"
integrity sha512-OuvejWH6vIaUo59Ndlh89purNm4DCIy/v3QoYlcGnn+PkYI8BhNHfCuAESrWX+ZPfq9JccVJ+XXgOMy77PJexg==
core-util-is@1.0.2, core-util-is@~1.0.0: core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -5721,9 +5581,9 @@ ejs@^3.0.1:
integrity sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw== integrity sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==
electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.306: electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.306:
version "1.3.312" version "1.3.314"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.312.tgz#6ef8700096e4a726b9cd7285523561629fa70e12" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.314.tgz#c186a499ed2c9057bce9eb8dca294d6d5450facc"
integrity sha512-/Nk6Hvwt+RfS9X3oA4IXpWqpcnS7cdWsTMP4AmrP8hPpxtZbHemvTEYzjAKghk28aS9zIV8NwGHNt8H+6OmJug== integrity sha512-IKDR/xCxKFhPts7h+VaSXS02Z1mznP3fli1BbXWXeN89i2gCzKraU8qLpEid8YzKcmZdZD3Mly3cn5/lY9xsBQ==
elegant-spinner@^1.0.1: elegant-spinner@^1.0.1:
version "1.0.1" version "1.0.1"
@ -5903,22 +5763,22 @@ error@^7.0.0:
string-template "~0.2.1" string-template "~0.2.1"
es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.15.0, es-abstract@^1.5.1, es-abstract@^1.7.0: es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.15.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
version "1.16.0" version "1.16.2"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.0.tgz#d3a26dc9c3283ac9750dca569586e976d9dcc06d" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34"
integrity sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg== integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==
dependencies: dependencies:
es-to-primitive "^1.2.0" es-to-primitive "^1.2.1"
function-bind "^1.1.1" function-bind "^1.1.1"
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.0" has-symbols "^1.0.1"
is-callable "^1.1.4" is-callable "^1.1.4"
is-regex "^1.0.4" is-regex "^1.0.4"
object-inspect "^1.6.0" object-inspect "^1.7.0"
object-keys "^1.1.1" object-keys "^1.1.1"
string.prototype.trimleft "^2.1.0" string.prototype.trimleft "^2.1.0"
string.prototype.trimright "^2.1.0" string.prototype.trimright "^2.1.0"
es-to-primitive@^1.2.0: es-to-primitive@^1.2.1:
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
@ -6007,6 +5867,11 @@ eslint-module-utils@^2.4.0:
debug "^2.6.8" debug "^2.6.8"
pkg-dir "^2.0.0" pkg-dir "^2.0.0"
eslint-plugin-eslint-plugin@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.1.0.tgz#a7a00f15a886957d855feacaafee264f039e62d5"
integrity sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg==
eslint-plugin-header@^3.0.0: eslint-plugin-header@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz#0e048b5f0adfdd9754142d59d551ae6bfdaf90ad" resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz#0e048b5f0adfdd9754142d59d551ae6bfdaf90ad"
@ -6050,19 +5915,20 @@ eslint-plugin-react-hooks@^2.3.0:
integrity sha512-gLKCa52G4ee7uXzdLiorca7JIQZPPXRAQDXV83J4bUEeUuc5pIEyZYAZ45Xnxe5IuupxEqHS+hUhSLIimK1EMw== integrity sha512-gLKCa52G4ee7uXzdLiorca7JIQZPPXRAQDXV83J4bUEeUuc5pIEyZYAZ45Xnxe5IuupxEqHS+hUhSLIimK1EMw==
eslint-plugin-react@^7.16.0: eslint-plugin-react@^7.16.0:
version "7.16.0" version "7.17.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz#a31b3e134b76046abe3cd278e7482bd35a1d12d7"
integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== integrity sha512-ODB7yg6lxhBVMeiH1c7E95FLD4E/TwmFjltiU+ethv7KPdCwgiFuOZg9zNRHyufStTDLl/dEFqI2Q1VPmCd78A==
dependencies: dependencies:
array-includes "^3.0.3" array-includes "^3.0.3"
doctrine "^2.1.0" doctrine "^2.1.0"
eslint-plugin-eslint-plugin "^2.1.0"
has "^1.0.3" has "^1.0.3"
jsx-ast-utils "^2.2.1" jsx-ast-utils "^2.2.3"
object.entries "^1.1.0" object.entries "^1.1.0"
object.fromentries "^2.0.0" object.fromentries "^2.0.1"
object.values "^1.1.0" object.values "^1.1.0"
prop-types "^15.7.2" prop-types "^15.7.2"
resolve "^1.12.0" resolve "^1.13.1"
eslint-scope@^4.0.3: eslint-scope@^4.0.3:
version "4.0.3" version "4.0.3"
@ -6092,10 +5958,10 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
eslint@^6.7.0: eslint@^6.7.1:
version "6.7.0" version "6.7.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.0.tgz#766162e383b236e61d873697f82c3a3e41392020" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.1.tgz#269ccccec3ef60ab32358a44d147ac209154b919"
integrity sha512-dQpj+PaHKHfXHQ2Imcw5d853PTvkUGbHk/MR68KQUl98EgKDCdh4vLRH1ZxhqeQjQFJeg8fgN0UwmNhN3l8dDQ== integrity sha512-UWzBS79pNcsDSxgxbdjkmzn/B6BhsXMfUaOHnNwyE8nD+Q6pyT96ow2MccVayUTV4yMid4qLhMiQaywctRkBLA==
dependencies: dependencies:
"@babel/code-frame" "^7.0.0" "@babel/code-frame" "^7.0.0"
ajv "^6.10.0" ajv "^6.10.0"
@ -6282,10 +6148,10 @@ execa@^2.0.3:
signal-exit "^3.0.2" signal-exit "^3.0.2"
strip-final-newline "^2.0.0" strip-final-newline "^2.0.0"
execa@^3.3.0: execa@^3.4.0:
version "3.3.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-3.3.0.tgz#7e348eef129a1937f21ecbbd53390942653522c1" resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
integrity sha512-j5Vit5WZR/cbHlqU97+qcnw9WHRCIL4V1SVe75VcHcD1JRBdt8fv0zw89b7CQHQdUHTt2VjuhcF5ibAgVOxqpg== integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
dependencies: dependencies:
cross-spawn "^7.0.0" cross-spawn "^7.0.0"
get-stream "^5.0.0" get-stream "^5.0.0"
@ -7686,6 +7552,11 @@ html-minifier-terser@^5.0.1:
relateurl "^0.2.7" relateurl "^0.2.7"
terser "^4.3.9" terser "^4.3.9"
html-tags@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
html-void-elements@^1.0.1: html-void-elements@^1.0.1:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.4.tgz#95e8bb5ecd6b88766569c2645f2b5f1591db9ba5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.4.tgz#95e8bb5ecd6b88766569c2645f2b5f1591db9ba5"
@ -9109,17 +8980,6 @@ jest@^24.9.0:
import-local "^2.0.0" import-local "^2.0.0"
jest-cli "^24.9.0" jest-cli "^24.9.0"
jimp@^0.5.4:
version "0.5.6"
resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.5.6.tgz#dd114decd060927ae439f2e0980df619c179f912"
integrity sha512-H0nHTu6KgAgQzDxa38ew2dXbnRzKm1w5uEyhMIxqwCQVjwgarOjjkV/avbNLxfxRHAFaNp4rGIc/qm8P+uhX9A==
dependencies:
"@babel/polyfill" "^7.0.0"
"@jimp/custom" "^0.5.4"
"@jimp/plugins" "^0.5.5"
"@jimp/types" "^0.5.4"
core-js "^2.5.7"
jpeg-js@^0.3.4: jpeg-js@^0.3.4:
version "0.3.6" version "0.3.6"
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.6.tgz#c40382aac9506e7d1f2d856eb02f6c7b2a98b37c" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.6.tgz#c40382aac9506e7d1f2d856eb02f6c7b2a98b37c"
@ -9275,7 +9135,7 @@ jsprim@^1.2.2:
json-schema "0.2.3" json-schema "0.2.3"
verror "1.10.0" verror "1.10.0"
jsx-ast-utils@^2.2.1: jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3:
version "2.2.3" version "2.2.3"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f"
integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==
@ -9413,10 +9273,10 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
lint-staged@^9.4.3: lint-staged@^9.5.0:
version "9.4.3" version "9.5.0"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.4.3.tgz#f55ad5f94f6e105294bfd6499b23142961f7b982" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33"
integrity sha512-PejnI+rwOAmKAIO+5UuAZU9gxdej/ovSEOAY34yMfC3OS4Ac82vCBPzAWLReR9zCPOMqeVwQRaZ3bUBpAsaL2Q== integrity sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA==
dependencies: dependencies:
chalk "^2.4.2" chalk "^2.4.2"
commander "^2.20.0" commander "^2.20.0"
@ -9492,7 +9352,7 @@ livereload-js@^2.3.0:
resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c"
integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==
load-bmfont@^1.3.1, load-bmfont@^1.4.0: load-bmfont@^1.3.1:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz#75f17070b14a8c785fe7f5bee2e6fd4f98093b6b" resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz#75f17070b14a8c785fe7f5bee2e6fd4f98093b6b"
integrity sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g== integrity sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==
@ -10529,9 +10389,9 @@ no-case@^2.2.0:
lower-case "^1.1.1" lower-case "^1.1.1"
node-abi@^2.7.0: node-abi@^2.7.0:
version "2.12.0" version "2.13.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.12.0.tgz#40e9cfabdda1837863fa825e7dfa0b15686adf6f" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.13.0.tgz#e2f2ec444d0aca3ea1b3874b6de41d1665828f63"
integrity sha512-VhPBXCIcvmo/5K8HPmnWJyyhvgKxnHTUMXR/XwGHV68+wrgkzST4UmQrY/XszSWA5dtnXpNp528zkcyJ/pzVcw== integrity sha512-9HrZGFVTR5SOu3PZAnAY2hLO36aW1wmA+FDsVkr85BTST32TLCA1H/AEcatVRAsWLyXS3bqUDYCAjq5/QGuSTA==
dependencies: dependencies:
semver "^5.4.1" semver "^5.4.1"
@ -10660,13 +10520,15 @@ node-releases@^1.1.29, node-releases@^1.1.40:
semver "^6.3.0" semver "^6.3.0"
node-vibrant@^3.1.4: node-vibrant@^3.1.4:
version "3.1.4" version "3.1.5"
resolved "https://registry.yarnpkg.com/node-vibrant/-/node-vibrant-3.1.4.tgz#6d3ec01bb5e3e45f05cd6d81e1ed7da3d429f594" resolved "https://registry.yarnpkg.com/node-vibrant/-/node-vibrant-3.1.5.tgz#8729bf35aabd54cd2eccbfadf22124ab4e1305b0"
integrity sha512-6z33ItA+hKW96kV/qRxxJraHlLacB0vlGW8QKKbYYIiMs0pZxeMNl2iEnR6ZepqD86PnmWCnKGHxzndBaZoc8g== integrity sha512-Gk+iyBzPSN1SF5qL818QaBtuA38206Z8iPNa0PcLUPyIbZL4+i14VmYxkGCL0n/5Q1721CRSktqtACgkx7Qodg==
dependencies: dependencies:
"@jimp/custom" "^0.9.3"
"@jimp/plugin-resize" "^0.9.3"
"@jimp/types" "^0.9.3"
"@types/lodash" "^4.14.53" "@types/lodash" "^4.14.53"
"@types/node" "^10.11.7" "@types/node" "^10.11.7"
jimp "^0.5.4"
lodash "^4.17.4" lodash "^4.17.4"
url "^0.11.0" url "^0.11.0"
@ -10892,7 +10754,7 @@ object-copy@^0.1.0:
define-property "^0.2.5" define-property "^0.2.5"
kind-of "^3.0.3" kind-of "^3.0.3"
object-inspect@^1.6.0: object-inspect@^1.6.0, object-inspect@^1.7.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
@ -10934,7 +10796,7 @@ object.entries@^1.0.4, object.entries@^1.1.0:
function-bind "^1.1.1" function-bind "^1.1.1"
has "^1.0.3" has "^1.0.3"
object.fromentries@^2.0.0, object.fromentries@^2.0.1: object.fromentries@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704"
integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA== integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==
@ -12003,9 +11865,9 @@ postcss-modules-local-by-default@^3.0.2:
postcss-value-parser "^4.0.0" postcss-value-parser "^4.0.0"
postcss-modules-scope@^2.1.0: postcss-modules-scope@^2.1.0:
version "2.1.0" version "2.1.1"
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba"
integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==
dependencies: dependencies:
postcss "^7.0.6" postcss "^7.0.6"
postcss-selector-parser "^6.0.0" postcss-selector-parser "^6.0.0"
@ -13408,10 +13270,10 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
version "1.12.2" version "1.13.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.2.tgz#08b12496d9aa8659c75f534a8f05f0d892fff594" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
integrity sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw== integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==
dependencies: dependencies:
path-parse "^1.0.6" path-parse "^1.0.6"
@ -13611,9 +13473,9 @@ schema-utils@^1.0.0:
ajv-keywords "^3.1.0" ajv-keywords "^3.1.0"
schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0: schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0:
version "2.5.0" version "2.6.1"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.5.0.tgz#8f254f618d402cc80257486213c8970edfd7c22f" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f"
integrity sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ== integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==
dependencies: dependencies:
ajv "^6.10.2" ajv "^6.10.2"
ajv-keywords "^3.4.1" ajv-keywords "^3.4.1"
@ -14479,10 +14341,10 @@ strong-log-transformer@^2.0.0:
minimist "^1.2.0" minimist "^1.2.0"
through "^2.3.4" through "^2.3.4"
style-loader@^1.0.0: style-loader@^1.0.1:
version "1.0.0" version "1.0.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.1.tgz#aec6d4c61d0ed8d0a442faed741d4dfc6573888a"
integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== integrity sha512-CnpEkSR1C+REjudiTWCv4+ssP7SCiuaQZJTZDWBRwTJoS90mdqkB8uOGMHKgVeUzpaU7IfLWoyQbvvs5Joj3Xw==
dependencies: dependencies:
loader-utils "^1.2.3" loader-utils "^1.2.3"
schema-utils "^2.0.1" schema-utils "^2.0.1"
@ -15044,9 +14906,9 @@ ua-parser-js@^0.7.18:
integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==
uglify-js@^3.1.4: uglify-js@^3.1.4:
version "3.6.9" version "3.7.0"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.9.tgz#85d353edb6ddfb62a9d798f36e91792249320611" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.0.tgz#14b854003386b7a7c045910f43afbc96d2aa5307"
integrity sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw== integrity sha512-PC/ee458NEMITe1OufAjal65i6lB58R1HWMRcxwvdz1UopW0DYqlRL3xdu3IcTvTXsB02CRHykidkTRL+A3hQA==
dependencies: dependencies:
commander "~2.20.3" commander "~2.20.3"
source-map "~0.6.1" source-map "~0.6.1"