1
0
Fork 0
mirror of https://github.com/codex-team/codex.docs.git synced 2025-08-09 07:25:21 +02:00

Merge branch 'master' into feature/design-updates

This commit is contained in:
Peter Savchenko 2019-03-13 08:42:53 +03:00
commit 9437bacdc3
No known key found for this signature in database
GPG key ID: 63E739583C761566
13 changed files with 125 additions and 128 deletions

View file

@ -12,56 +12,51 @@
"build": "webpack ./src/frontend/js/app.js --o='./public/dist/[name].bundle.js' --output-library=Docs --output-public-path=/dist/ -p --mode=production", "build": "webpack ./src/frontend/js/app.js --o='./public/dist/[name].bundle.js' --output-library=Docs --output-public-path=/dist/ -p --mode=production",
"build:dev": "webpack ./src/frontend/js/app.js --o='./public/dist/[name].bundle.js' --output-library=Docs --output-public-path=/dist/ -p --mode=development --watch", "build:dev": "webpack ./src/frontend/js/app.js --o='./public/dist/[name].bundle.js' --output-library=Docs --output-public-path=/dist/ -p --mode=development --watch",
"precommit": "yarn lint && yarn test --exit", "precommit": "yarn lint && yarn test --exit",
"generatePassword": "node ./generatePassword.js" "generatePassword": "node ./generatePassword.js",
"editor-upgrade": "yarn add -D @editorjs/{editorjs,header,code,delimiter,list,image,table,inline-code,marker}@latest"
}, },
"dependencies": { "dependencies": {
"@babel/polyfill": "^7.0.0",
"bcrypt": "^3.0.3", "bcrypt": "^3.0.3",
"body-parser": "latest",
"commander": "^2.19.0", "commander": "^2.19.0",
"cookie-parser": "~1.4.3", "cookie-parser": "~1.4.3",
"cross-env": "^5.2.0",
"csurf": "^1.9.0", "csurf": "^1.9.0",
"debug": "~4.1.0", "debug": "~4.1.0",
"dotenv": "^6.2.0", "dotenv": "^6.2.0",
"eslint-plugin-standard": "^4.0.0",
"express": "~4.16.0", "express": "~4.16.0",
"file-type": "^10.7.1", "file-type": "^10.7.1",
"http-errors": "~1.7.1", "http-errors": "~1.7.1",
"jsonwebtoken": "^8.4.0", "jsonwebtoken": "^8.4.0",
"mime": "^2.4.0", "mime": "^2.4.0",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"module-dispatcher": "^2.0.0",
"morgan": "~1.9.0", "morgan": "~1.9.0",
"multer": "^1.3.1", "multer": "^1.3.1",
"nedb": "^1.8.0", "nedb": "^1.8.0",
"node-fetch": "^2.3.0", "node-fetch": "^2.3.0",
"nodemon": "^1.18.3", "nodemon": "^1.18.3",
"normalize.css": "^8.0.0",
"twig": "~1.12.0", "twig": "~1.12.0",
"uuid4": "^1.0.0" "uuid4": "^1.0.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.0.0", "@babel/core": "^7.0.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0", "@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/polyfill": "^7.2.5",
"@babel/preset-env": "^7.1.0", "@babel/preset-env": "^7.1.0",
"@editorjs/code": "^2.4.0", "@editorjs/code": "^2.4.0",
"@editorjs/delimiter": "^1.1.0", "@editorjs/delimiter": "^1.1.0",
"@editorjs/editorjs": "^2.11.7", "@editorjs/editorjs": "^2.11.8",
"@editorjs/embed": "^2.2.0", "@editorjs/header": "^2.2.2",
"@editorjs/header": "^2.2.0",
"@editorjs/image": "^2.1.0", "@editorjs/image": "^2.1.0",
"@editorjs/inline-code": "^1.3.0", "@editorjs/inline-code": "^1.3.0",
"@editorjs/list": "^1.3.0", "@editorjs/list": "^1.3.1",
"@editorjs/marker": "^1.2.0", "@editorjs/marker": "^1.2.0",
"@editorjs/quote": "^2.2.0", "@editorjs/table": "^1.2.0",
"@editorjs/raw": "^2.1.1",
"autoprefixer": "^9.1.3", "autoprefixer": "^9.1.3",
"babel": "^6.23.0", "babel": "^6.23.0",
"babel-eslint": "^10.0.1", "babel-eslint": "^10.0.1",
"babel-loader": "^8.0.2", "babel-loader": "^8.0.2",
"chai": "^4.1.2", "chai": "^4.1.2",
"chai-http": "^4.0.0", "chai-http": "^4.0.0",
"cross-env": "^5.2.0",
"css-loader": "^1.0.0", "css-loader": "^1.0.0",
"cssnano": "^4.1.0", "cssnano": "^4.1.0",
"eslint": "^5.3.0", "eslint": "^5.3.0",
@ -69,11 +64,14 @@
"eslint-plugin-chai-friendly": "^0.4.1", "eslint-plugin-chai-friendly": "^0.4.1",
"eslint-plugin-import": "^2.14.0", "eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.1", "eslint-plugin-node": "^8.0.1",
"eslint-plugin-standard": "^4.0.0",
"highlight.js": "^9.13.1", "highlight.js": "^9.13.1",
"husky": "^1.1.2", "husky": "^1.1.2",
"mini-css-extract-plugin": "^0.4.3", "mini-css-extract-plugin": "^0.4.3",
"mocha": "^5.2.0", "mocha": "^5.2.0",
"mocha-sinon": "^2.1.0", "mocha-sinon": "^2.1.0",
"module-dispatcher": "^2.0.0",
"normalize.css": "^8.0.1",
"nyc": "^13.1.0", "nyc": "^13.1.0",
"postcss": "^7.0.2", "postcss": "^7.0.2",
"postcss-apply": "^0.11.0", "postcss-apply": "^0.11.0",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,18 +1,20 @@
import EditorJS from '@editorjs/editorjs'; import EditorJS from '@editorjs/editorjs';
/** /**
* Tools for the Editor * Block Tools for the Editor
*/ */
import Header from '@editorjs/header'; import Header from '@editorjs/header';
import Quote from '@editorjs/quote';
import Marker from '@editorjs/marker';
import CodeTool from '@editorjs/code';
import Delimiter from '@editorjs/delimiter';
import InlineCode from '@editorjs/inline-code';
import List from '@editorjs/list';
import Image from '@editorjs/image'; import Image from '@editorjs/image';
import RawTool from '@editorjs/raw'; import CodeTool from '@editorjs/code';
import Embed from '@editorjs/embed'; import List from '@editorjs/list';
import Delimiter from '@editorjs/delimiter';
import Table from '@editorjs/table';
/**
* Inline Tools for the Editor
*/
import InlineCode from '@editorjs/inline-code';
import Marker from '@editorjs/marker';
/** /**
* Class for working with Editor.js * Class for working with Editor.js
@ -30,37 +32,12 @@ export default class Editor {
tools: { tools: {
header: { header: {
class: Header, class: Header,
inlineToolbar: ['link', 'marker'], inlineToolbar: ['link', 'marker', 'inlineCode'],
config: { config: {
placeholder: options.headerPlaceholder || '' placeholder: options.headerPlaceholder || ''
} }
}, },
quote: {
class: Quote,
inlineToolbar: true
},
code: {
class: CodeTool,
shortcut: 'CMD+SHIFT+D'
},
rawTool: {
class: RawTool,
shortcut: 'CMD+SHIFT+R'
},
delimiter: Delimiter,
embed: Embed,
inlineCode: {
class: InlineCode,
shortcut: 'CMD+SHIFT+C'
},
marker: {
class: Marker,
shortcut: 'CMD+SHIFT+M'
},
list: {
class: List,
inlineToolbar: true
},
image: { image: {
class: Image, class: Image,
inlineToolbar: true, inlineToolbar: true,
@ -78,6 +55,36 @@ export default class Editor {
}) })
} }
} }
},
code: {
class: CodeTool,
shortcut: 'CMD+SHIFT+D'
},
list: {
class: List,
inlineToolbar: true
},
delimiter: Delimiter,
table: {
class: Table,
inlineToolbar: true
},
/**
* Inline Tools
*/
inlineCode: {
class: InlineCode,
shortcut: 'CMD+SHIFT+C'
},
marker: {
class: Marker,
shortcut: 'CMD+SHIFT+M'
} }
}, },
data: { data: {

View file

@ -126,7 +126,7 @@
text-align: center; text-align: center;
&__content { &__content {
img { img, video {
vertical-align: bottom; vertical-align: bottom;
max-width: 100%; max-width: 100%;
} }
@ -136,13 +136,13 @@
width: calc(100% + 120px) !important; width: calc(100% + 120px) !important;
margin-left: -60px; margin-left: -60px;
img { img, video {
width: 100%; width: 100%;
} }
} }
&--bordered { &--bordered {
img { img, video {
border: 3px solid var(--color-line-gray); border: 3px solid var(--color-line-gray);
box-sizing: border-box; box-sizing: border-box;
} }
@ -152,7 +152,7 @@
padding: 15px; padding: 15px;
background: var(--color-line-gray); background: var(--color-line-gray);
img { img, video {
max-width: 60%; max-width: 60%;
margin: 0 auto; margin: 0 auto;
} }
@ -183,3 +183,21 @@
letter-spacing: 0.2em; letter-spacing: 0.2em;
} }
} }
/**
* Table
* ==================
*/
.block-table {
margin: 20px 0;
table-layout: fixed;
width: 100%;
border-radius: 3px;
border-collapse: collapse;
border: 1px solid var(--color-line-gray);
td {
padding: 8px 10px;
border: 1px solid var(--color-line-gray);
}
}

View file

@ -1,7 +1,6 @@
require('dotenv').config(); require('dotenv').config();
const express = require('express'); const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const router = express.Router(); const router = express.Router();
const Users = require('../controllers/users'); const Users = require('../controllers/users');
@ -9,7 +8,7 @@ const config = require('../../config/index');
const bcrypt = require('bcrypt'); const bcrypt = require('bcrypt');
const csrf = require('csurf'); const csrf = require('csurf');
const csrfProtection = csrf({ cookie: true }); const csrfProtection = csrf({ cookie: true });
const parseForm = bodyParser.urlencoded({ extended: false }); const parseForm = express.urlencoded({ extended: false });
/** /**
* Authorization page * Authorization page

View file

@ -10,7 +10,7 @@
{% else %} {% else %}
href="/page/{{ firstLevelPage._id }}" href="/page/{{ firstLevelPage._id }}"
{% endif %}> {% endif %}>
{{ firstLevelPage.title }} {{ firstLevelPage.title | striptags }}
</a> </a>
{% if firstLevelPage.children is not empty %} {% if firstLevelPage.children is not empty %}
<ul class="docs-aside__section-list"> <ul class="docs-aside__section-list">
@ -22,7 +22,7 @@
{% else %} {% else %}
href="/page/{{ child._id }}" href="/page/{{ child._id }}"
{% endif %}> {% endif %}>
{{ child.title }} {{ child.title | striptags }}
</a> </a>
</li> </li>
{% endfor %} {% endfor %}

View file

@ -1,6 +1,6 @@
<header class="docs-header"> <header class="docs-header">
<a href="/" class="docs-header__logo"> <a href="/" class="docs-header__logo">
{{ config.title }} {{ config.title | striptags }}
</a> </a>
<ul class="docs-header__menu"> <ul class="docs-header__menu">
{% if isAuthorized == true %} {% if isAuthorized == true %}
@ -19,7 +19,7 @@
{% else %} {% else %}
href="/page/{{ option._id }}" href="/page/{{ option._id }}"
{% endif %}> {% endif %}>
{{ option.title }} {{ option.title | striptags }}
</a> </a>
</li> </li>
{% endfor %} {% endfor %}

View file

@ -1,10 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>{{ config.title }}</title> <title>{{ (page.title ?: config.title) | striptags }}</title>
<link rel="stylesheet" href="/dist/main.css" /> <link rel="stylesheet" href="/dist/main.css" />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="{{ page.title }}" /> <meta property="og:title" content="{{ page.title | striptags }}" />
<meta property="article:modified_time" content="{{ (page.body.time / 1000) | date("c") }}" /> <meta property="article:modified_time" content="{{ (page.body.time / 1000) | date("c") }}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</head> </head>

View file

@ -14,7 +14,14 @@
<figure class="block-image"> <figure class="block-image">
<div class="{{classes.join(' ')}}"> <div class="{{classes.join(' ')}}">
{% if file.mime and file.mime == 'video/mp4' %}
<video autoplay loop muted playsinline>
<source src="{{file.url}}" type="video/mp4">
</video>
{% else %}
<img src="{{file.url}}" alt="{{caption ? caption : ''}}"> <img src="{{file.url}}" alt="{{caption ? caption : ''}}">
{% endif %}
</div> </div>
{% if caption %} {% if caption %}
<footer class="block-image__caption"> <footer class="block-image__caption">

View file

@ -0,0 +1,11 @@
<table class="block-table">
{% for row in content %}
<tr>
{% for cell in row %}
<td>
{{ cell }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>

View file

@ -32,7 +32,7 @@
{% for block in page.body.blocks %} {% for block in page.body.blocks %}
{# Skip first header, because it is already showed as a Title #} {# Skip first header, because it is already showed as a Title #}
{% if not (loop.first and block.type == 'header') %} {% if not (loop.first and block.type == 'header') %}
{% if block.type in ['paragraph', 'header', 'list', 'code', 'image', 'delimiter'] %} {% if block.type in ['paragraph', 'header', 'image', 'code', 'list', 'delimiter', 'table'] %}
{% include './blocks/' ~ block.type ~ '.twig' with block.data %} {% include './blocks/' ~ block.type ~ '.twig' with block.data %}
{% endif %} {% endif %}
{% endif %} {% endif %}

View file

@ -510,7 +510,7 @@
"@babel/helper-regex" "^7.0.0" "@babel/helper-regex" "^7.0.0"
regexpu-core "^4.1.3" regexpu-core "^4.1.3"
"@babel/polyfill@^7.0.0": "@babel/polyfill@^7.2.5":
version "7.2.5" version "7.2.5"
resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d"
integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug== integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==
@ -613,20 +613,15 @@
resolved "https://registry.yarnpkg.com/@editorjs/delimiter/-/delimiter-1.1.0.tgz#f61808ea92e4e289607d54441964f1cb8605410a" resolved "https://registry.yarnpkg.com/@editorjs/delimiter/-/delimiter-1.1.0.tgz#f61808ea92e4e289607d54441964f1cb8605410a"
integrity sha512-0G36vEvvb94g6nu/qs2rVjC/qjxLnY20OfOgxROKSOOXzS7xnkTij5raeIxRiYueeLL5fMrzrvtFH7wclfxF+g== integrity sha512-0G36vEvvb94g6nu/qs2rVjC/qjxLnY20OfOgxROKSOOXzS7xnkTij5raeIxRiYueeLL5fMrzrvtFH7wclfxF+g==
"@editorjs/editorjs@^2.11.7": "@editorjs/editorjs@^2.11.8":
version "2.11.7" version "2.11.8"
resolved "https://registry.yarnpkg.com/@editorjs/editorjs/-/editorjs-2.11.7.tgz#63c66ce74ef4f55e344f3ad703a7cfec476478b4" resolved "https://registry.yarnpkg.com/@editorjs/editorjs/-/editorjs-2.11.8.tgz#b3269158ec866e9667b5ce0d96982bfc7922ce85"
integrity sha512-f1kJc41n0MkEm+PadjRSyhQEHDauPA6S90OwlCW+bUwuLIvxwan1ttnE9G4lf6LT/Yd8PIanTlOTJqeEYiqDqA== integrity sha512-kUYofUe9Csp+d7/MiDmIv05cTY3WRBynz01ImjjEG+4d7YDgYdAqRHrl/nF4ffLZ/VpL3OyTI3Crgq3Rf6E4bA==
"@editorjs/embed@^2.2.0": "@editorjs/header@^2.2.2":
version "2.2.0" version "2.2.2"
resolved "https://registry.yarnpkg.com/@editorjs/embed/-/embed-2.2.0.tgz#4a6121cd4c526ea1db20c9cc9629e6022861f18f" resolved "https://registry.yarnpkg.com/@editorjs/header/-/header-2.2.2.tgz#47ce654032f7a094c0b40daa4545c61893033002"
integrity sha512-jWjFL6VyiGlezSWQRvddMHpidGHy2blUS9lmtNxuIZRwob6Xizg8LweKSFEvjr9tPLqKyX3sIeSQlnCb1vntJQ== integrity sha512-r9lmDVdVSNjnSoYmEMOSLp7BARWEU2O79UJjWPkLWAwV7RIOYO+s9fF3IbTEaPaltANAZvIzOYNmryGOhL8biA==
"@editorjs/header@^2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@editorjs/header/-/header-2.2.0.tgz#df19f1dd6a22a0a2264ed7ef3c0611d841420390"
integrity sha512-y0JfNT7BwGiewzwklYiXEYgHkEAZVo/Y1noAg1ZF/Kd9vY6MoK/o9LjTzV3IfxZsObKBSvwzz3OxfXhGIv3tCQ==
"@editorjs/image@^2.1.0": "@editorjs/image@^2.1.0":
version "2.1.0" version "2.1.0"
@ -638,25 +633,20 @@
resolved "https://registry.yarnpkg.com/@editorjs/inline-code/-/inline-code-1.3.0.tgz#66b915d2c128ba520ba4b245067d40851d78355a" resolved "https://registry.yarnpkg.com/@editorjs/inline-code/-/inline-code-1.3.0.tgz#66b915d2c128ba520ba4b245067d40851d78355a"
integrity sha512-pKvBYvPyaNZKiRd+jK8X2HDgAq8kDaOPXxUTB33He2L53OqbAJ8Cmt+8F4EQ3i0EyQYOrtT2uXnDQkjvVg41tg== integrity sha512-pKvBYvPyaNZKiRd+jK8X2HDgAq8kDaOPXxUTB33He2L53OqbAJ8Cmt+8F4EQ3i0EyQYOrtT2uXnDQkjvVg41tg==
"@editorjs/list@^1.3.0": "@editorjs/list@^1.3.1":
version "1.3.0" version "1.3.1"
resolved "https://registry.yarnpkg.com/@editorjs/list/-/list-1.3.0.tgz#8657012488e29bd86d072530f6bf8ad6d9686bb7" resolved "https://registry.yarnpkg.com/@editorjs/list/-/list-1.3.1.tgz#0c551aa1efe80a8fcd6242cc6053eb72351d25c8"
integrity sha512-jMfvny9BUy2MroFoiy5WyxRVKwLw3F0jAcLZ/Qgw055/TvP2I9LzIRJhIUEkKOPo8T/rx7Xf4/8lklUKvF6Yrg== integrity sha512-LYjUL26fe5P1mXmwXiiUPcU1V/HHT4tZPRJaEC4M7DB8SScYCiK9/ByIxd47a7751rsN/rUaI1MhKammZNH+dA==
"@editorjs/marker@^1.2.0": "@editorjs/marker@^1.2.0":
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/@editorjs/marker/-/marker-1.2.0.tgz#4e3130870c2ca4b3ac5b05405b4e49add55893cb" resolved "https://registry.yarnpkg.com/@editorjs/marker/-/marker-1.2.0.tgz#4e3130870c2ca4b3ac5b05405b4e49add55893cb"
integrity sha512-BkAvAvf2B0xsUbMPoht7g1oWaxw79NeqJM//+wM3VnEruj908qw7AluDBVy1gwOe2fhhryaDXQ3kbqU6HC8o1g== integrity sha512-BkAvAvf2B0xsUbMPoht7g1oWaxw79NeqJM//+wM3VnEruj908qw7AluDBVy1gwOe2fhhryaDXQ3kbqU6HC8o1g==
"@editorjs/quote@^2.2.0": "@editorjs/table@^1.2.0":
version "2.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/@editorjs/quote/-/quote-2.2.0.tgz#a62250c7b6ef19772021530f12b56f0ed13377e8" resolved "https://registry.yarnpkg.com/@editorjs/table/-/table-1.2.0.tgz#547d7b28c96f8a37605bea10bd4f016e8bfc344d"
integrity sha512-Ej0z8ylsdfu106n+d6tDZG5A6SXTBDgtKlmtACsvtUa645oiDatwNwe5K6u7nFm6SJiTJmBxA9qKRQPH3YBT6g== integrity sha512-pCcNf/9JzVWQw6TsqUHew73UoVSYTftXviKVqsnVazx4/D8eH5g5fsEY5L0LEl9KC0mJMJij+h6I1ge70kDlgg==
"@editorjs/raw@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@editorjs/raw/-/raw-2.1.1.tgz#00cea181d8ce1a2a082352c6644090660c8237c7"
integrity sha512-So+Y6fLIO7+JGRa/tOsHho58hASYt1m7lDM/+0fehs+LMdYlloLmj68X2q7Wxk60R8aCrUscXt/fOggcg7giPQ==
"@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.2.0": "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.2.0":
version "1.3.0" version "1.3.0"
@ -1225,7 +1215,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
body-parser@1.18.3, body-parser@latest: body-parser@1.18.3:
version "1.18.3" version "1.18.3"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
@ -4828,7 +4818,7 @@ normalize-url@^3.0.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
normalize.css@^8.0.0: normalize.css@^8.0.1:
version "8.0.1" version "8.0.1"
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==