From 0afec458558514b3ed5bd2a55d3d98d994fdfd19 Mon Sep 17 00:00:00 2001 From: RaenonX Date: Sun, 24 Jan 2021 19:58:54 -0600 Subject: [PATCH 1/3] IMP - Improve code quality Signed-off-by: RaenonX --- .stylelintrc.json | 3 + README.md | 13 +- package-lock.json | 727 ++++++++++++++++++++++ package.json | 4 +- src/components/elements/markdown/main.css | 68 +- src/index.css | 30 +- 6 files changed, 799 insertions(+), 46 deletions(-) create mode 100644 .stylelintrc.json diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 00000000..40db42c6 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-standard" +} diff --git a/README.md b/README.md index 5bf69105..33da1ca2 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ -# dragalia-posts-site-front +# dragalia-site-front -Frontend of the website for the posts related to Dragalia Lost. - -### Website developing timer +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/83fa9f649f2e4001b848fc978642ea68)](https://www.codacy.com/gh/RaenonX-DL/dragalia-site-front/dashboard) +[![time tracker](https://wakatime.com/badge/github/RaenonX-DL/dragalia-site-front.svg)](https://wakatime.com/badge/github/RaenonX-DL/dragalia-site-front) -#### Frontend (this repo) +Frontend of [Dragalia Lost info website by OM](http://dl.raenonx.cc). -[![time tracker](https://wakatime.com/badge/github/RaenonX-DL/dragalia-site-front.svg)](https://wakatime.com/badge/github/RaenonX-DL/dragalia-site-front) +----- -#### Backend ([dragalia-site-back](https://github.com/RaenonX-DL/dragalia-site-back)) +Backend development time: [![time tracker](https://wakatime.com/badge/github/RaenonX-DL/dragalia-site-back.svg)](https://wakatime.com/badge/github/RaenonX-DL/dragalia-site-back) diff --git a/package-lock.json b/package-lock.json index bd1b6692..fec78d4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1959,6 +1959,25 @@ "@sinonjs/commons": "^1.7.0" } }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } + }, "@surma/rollup-plugin-off-main-thread": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.1.tgz", @@ -2380,6 +2399,12 @@ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, "@types/node": { "version": "12.19.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.0.tgz", @@ -4003,6 +4028,25 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.1.0.tgz", "integrity": "sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ==" }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -4251,6 +4295,23 @@ "shallow-clone": "^0.1.2" } }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + }, + "dependencies": { + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + } + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -5004,6 +5065,24 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, "decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", @@ -6262,6 +6341,15 @@ "strip-eof": "^1.0.0" } }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -6632,6 +6720,12 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastq": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", @@ -7128,6 +7222,12 @@ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -7213,6 +7313,21 @@ "slash": "^3.0.0" } }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -7252,6 +7367,12 @@ "har-schema": "^2.0.0" } }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, "harmony-reflect": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", @@ -7489,6 +7610,12 @@ "void-elements": "^2.0.1" } }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, "html-to-react": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.4.4.tgz", @@ -7878,6 +8005,12 @@ } } }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, "import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -10327,6 +10460,12 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, + "known-css-properties": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz", + "integrity": "sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==", + "dev": true + }, "language-subtag-registry": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz", @@ -10493,6 +10632,15 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, "loglevel": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", @@ -10564,6 +10712,12 @@ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -10580,6 +10734,12 @@ "repeat-string": "^1.0.0" } }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -10711,6 +10871,133 @@ } } }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "hosted-git-info": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", + "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", + "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.6", + "resolve": "^1.17.0", + "semver": "^7.3.2", + "validate-npm-package-license": "^3.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } + }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -10928,6 +11215,31 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, "minipass": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", @@ -11289,6 +11601,12 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, "normalize-url": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", @@ -12272,6 +12590,15 @@ "postcss": "^7.0.2" } }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, "postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", @@ -12300,6 +12627,15 @@ "postcss-values-parser": "^2.0.0" } }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, "postcss-load-config": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", @@ -12402,6 +12738,12 @@ "postcss": "^7.0.2" } }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, "postcss-merge-longhand": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", @@ -12879,6 +13221,12 @@ "postcss": "^7.0.2" } }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, "postcss-safe-parser": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz", @@ -12905,6 +13253,25 @@ } } }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + } + }, "postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", @@ -12952,6 +13319,12 @@ } } }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, "postcss-unique-selectors": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", @@ -13183,6 +13556,12 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -13975,6 +14354,17 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" }, + "remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "dev": true, + "requires": { + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + } + }, "remark-gfm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", @@ -13992,6 +14382,37 @@ "mdast-util-from-markdown": "^0.8.0" } }, + "remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + }, + "dependencies": { + "mdast-util-to-markdown": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz", + "integrity": "sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + } + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -14141,6 +14562,12 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -15264,6 +15691,12 @@ "wbuf": "^1.7.3" } }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -15653,6 +16086,12 @@ "schema-utils": "^2.7.0" } }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -15675,6 +16114,273 @@ } } }, + "stylelint": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.9.0.tgz", + "integrity": "sha512-VVWH2oixOAxpWL1vH+V42ReCzBjW2AeqskSAbi8+3OjV1Xg3VZkmTcAqBZfRRvJeF4BvYuDLXebW3tIHxgZDEg==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^1.0.0", + "chalk": "^4.1.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.0", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.2", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.20.0", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.2", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.4", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.0.7", + "v8-compile-cache": "^2.2.0", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "ajv": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + } + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + } + } + }, + "stylelint-config-recommended": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", + "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "dev": true + }, + "stylelint-config-standard": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz", + "integrity": "sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^3.0.0" + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -15712,6 +16418,12 @@ "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, "svgo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", @@ -16108,6 +16820,12 @@ "punycode": "^2.1.1" } }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, "trough": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", @@ -16330,6 +17048,15 @@ "crypto-random-string": "^1.0.0" } }, + "unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, "unist-util-is": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", diff --git a/package.json b/package.json index 8ffc32dc..7bb9fbce 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,8 @@ "@typescript-eslint/parser": "^4.6.0", "eslint": "^7.12.1", "eslint-config-google": "^0.14.0", - "eslint-plugin-react": "^7.21.5" + "eslint-plugin-react": "^7.21.5", + "stylelint": "^13.9.0", + "stylelint-config-standard": "^20.0.0" } } diff --git a/src/components/elements/markdown/main.css b/src/components/elements/markdown/main.css index e38669f0..9fd9c2a4 100644 --- a/src/components/elements/markdown/main.css +++ b/src/components/elements/markdown/main.css @@ -1,58 +1,66 @@ -.markdown-body h1, .markdown-body h2, .markdown-body h3, -.markdown-body h4, .markdown-body h5, .markdown-body h6 { - color: skyblue; +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + color: skyblue; } .markdown-body pre { - background-color: #151515; - color: #00ff00; - padding: 10px; - border-radius: 0.25rem; + background-color: #151515; + color: #0f0; + padding: 10px; + border-radius: 0.25rem; } .markdown-body table { - display: table; - width: 100%; - margin-bottom: 1rem; - border: 0; - color: #FFFFFF; - background-color: #0e0e0e; - border-collapse: collapse; - border-spacing: 2px; + display: table; + width: 100%; + margin-bottom: 1rem; + border: 0; + color: #fff; + background-color: #0e0e0e; + border-collapse: collapse; + border-spacing: 2px; } .markdown-body blockquote { - background-color: #222222; - border-radius: 10px; - color: #CCCCCC; + background-color: #222; + border-radius: 10px; + color: #ccc; } .markdown-body strong { - color: #BBBBFF; + color: #bbf; } -.markdown-body table, .markdown-body thead, .markdown-body th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; +.markdown-body table, +.markdown-body thead, +.markdown-body th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; } -.markdown-body th, .markdown-body td { - padding: 0.75rem; - border: 1px solid #454d55; +.markdown-body th, +.markdown-body td { + padding: 0.75rem; + border: 1px solid #454d55; } -.markdown-body thead th, .markdown-body tbody td { - border-bottom-width: 2px; +.markdown-body thead th, +.markdown-body tbody td { + border-bottom-width: 2px; } .markdown-body tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgba(255, 255, 255, 0.05); } .markdown-body tbody tr:hover { - background-color: rgb(50, 50, 50); + background-color: rgb(50, 50, 50); } .markdown-body tbody tr:hover:nth-of-type(odd) { - background-color: rgb(50, 50, 50); + background-color: rgb(50, 50, 50); } diff --git a/src/index.css b/src/index.css index 5e933742..970a57ff 100644 --- a/src/index.css +++ b/src/index.css @@ -2,15 +2,29 @@ body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + 'Roboto', + 'Oxygen', + 'Ubuntu', + 'Cantarell', + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + font-family: + source-code-pro, + Menlo, + Monaco, + Consolas, + 'Courier New', monospace; } @@ -19,13 +33,13 @@ img { max-height: 100%; } -p, ul { - margin: 0.5rem !important; +p, +ul { + margin: 0.5rem; } /* endregion */ - /* region Selective styling */ div.footer { @@ -33,13 +47,13 @@ div.footer { } div.btn-group-toggle > label.btn.active { - background-color: #c6c6c6 !important; + background-color: #c6c6c6; } /* endregion */ - /* region Youtube Embed */ + /* https://www.ankursheel.com/blog/full-width-you-tube-video-embed */ div.youtube-embed { From e45c70ffd3a127e831c04213e8753d084f4a335f Mon Sep 17 00:00:00 2001 From: RaenonX Date: Sun, 24 Jan 2021 20:33:38 -0600 Subject: [PATCH 2/3] ADD - toggle for SS only in attacking skills (closes #60) Signed-off-by: RaenonX --- public/locales/cht/translation.json | 10 +++++++--- public/locales/en/translation.json | 10 +++++++--- public/locales/jp/translation.json | 10 +++++++--- .../elements/gameData/skillAtk/inputMain.tsx | 15 ++++++++++----- .../elements/gameData/skillAtk/inputSection.tsx | 17 ++++++++++++++++- .../gameData/skillAtk/outputMain.test.tsx | 10 ++++++++++ .../elements/gameData/skillAtk/outputMain.tsx | 5 +++++ 7 files changed, 62 insertions(+), 15 deletions(-) diff --git a/public/locales/cht/translation.json b/public/locales/cht/translation.json index 74108ce8..b9ab0f80 100644 --- a/public/locales/cht/translation.json +++ b/public/locales/cht/translation.json @@ -77,7 +77,9 @@ "target_def_bk": "BK 降防率", "filter": "條件篩選", "filter_element": "屬性", - "filter_affliction": "異常狀態" + "filter_affliction": "異常狀態", + "filter_other": "其他", + "filter_shared_only": "限定共享技" }, "desc": { "atk": "泛指所有遊戲內與攻擊力有關的參數。", @@ -112,7 +114,8 @@ "target_def_bk": "BK 時,目標的防禦變動係數。通常為 0.6;暗牙、絕牙為 0.8 (BSK 1.25)。", "filter": "如果此區塊中有任何條件被勾選,則符合任一勾選條件的技能條目將會被列入,否則略過。", "filter_element": "如果複選屬性,例如: 火、風,則所有火屬性角色或風屬性角色的技能條目將會被列入,否則略過。", - "filter_affliction": "如果複選異常狀態,例如: 毒、火燒,則所有會上毒或火燒的條目將會被列入,否則略過。注意,這邊的條件篩選指的是技能本身所帶的異常狀態,並非異常特攻。" + "filter_affliction": "如果複選異常狀態,例如: 毒、火燒,則所有會上毒或火燒的條目將會被列入,否則略過。注意,這邊的條件篩選指的是技能本身所帶的異常狀態,並非異常特攻。", + "filter_other": "其他篩選條件。如果有勾選限定共享技,則篩選、計算時,只會考慮、顯示共享技能。" }, "entry": { "not_cancelable": "此技能無法取消。", @@ -152,7 +155,8 @@ "punisher": "特攻 - {{punisherVal}}", "punisher_data": "BK 特攻 {{punishersBkPct}}% / 其他特攻 {{punishersOtherPct}}%", "other": "其它", - "other_data": "屬性增傷 +{{otherElemBonusPct}}% / HP {{otherCurrentHpPct}}%" + "other_data": "屬性增傷 +{{otherElemBonusPct}}% / HP {{otherCurrentHpPct}}%", + "shared_only": "只顯示共享技" }, "collapse": "摺疊/展開", "search": "搜尋" diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index c9b1c317..205de350 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -77,7 +77,9 @@ "target_def_bk": "BK Def Reduction", "filter": "Filter", "filter_element": "Element", - "filter_affliction": "Affliction" + "filter_affliction": "Affliction", + "filter_other": "其他", + "filter_shared_only": "限定共享技" }, "desc": { "atk": "Any parameter that relates to strength", @@ -112,7 +114,8 @@ "target_def_bk": "Target’s def reduction during break state. Usual 0.6; Tartarus and LVolk are 0.8 (BSK 1.25)", "filter": "If any filter is selected, then the parameters that apply will be listed, otherwise they will be skipped.", "filter_element": "If multiple elements are selected, such as flame and wind, then all flame and wind characters’ skills will be listed, otherwise they will be skipped.", - "filter_affliction": "If multiple afflictions are selected, such as poison and burn, then anything that applies poison or burn will be listed, otherwise they will be skipped. Note: This filters for skills that apply afflictions, not ones that have affliction punishers." + "filter_affliction": "If multiple afflictions are selected, such as poison and burn, then anything that applies poison or burn will be listed, otherwise they will be skipped. Note: This filters for skills that apply afflictions, not ones that have affliction punishers.", + "filter_other": "其他篩選條件。如果有勾選限定共享技,則篩選、計算時,只會考慮、顯示共享技能。" }, "entry": { "not_cancelable": "This skill is not cancelable", @@ -152,7 +155,8 @@ "punisher": "Punisher - {{punisherVal}}", "punisher_data": "BK {{punishersBkPct}}% / Other {{punishersOtherPct}}%", "other": "Others", - "other_data": "Element +{{otherElemBonusPct}}% / HP {{otherCurrentHpPct}}%" + "other_data": "Element +{{otherElemBonusPct}}% / HP {{otherCurrentHpPct}}%", + "shared_only": "Shared Skill Only" }, "collapse": "Collapse/Expand", "search": "Search" diff --git a/public/locales/jp/translation.json b/public/locales/jp/translation.json index 7b8f9ce4..decb746f 100644 --- a/public/locales/jp/translation.json +++ b/public/locales/jp/translation.json @@ -77,7 +77,9 @@ "target_def_bk": "BK 降防率", "filter": "條件篩選", "filter_element": "屬性", - "filter_affliction": "異常狀態" + "filter_affliction": "異常狀態", + "filter_other": "其他", + "filter_shared_only": "限定共享技" }, "desc": { "atk": "泛指所有遊戲內與攻擊力有關的參數。", @@ -112,7 +114,8 @@ "target_def_bk": "BK 時,目標的防禦變動係數。通常為 0.6;暗牙、絕牙為 0.8 (BSK 1.25)。", "filter": "如果此區塊中有任何條件被勾選,則符合任一勾選條件的技能條目將會被列入,否則略過。", "filter_element": "如果複選屬性,例如: 火、風,則所有火屬性角色或風屬性角色的技能條目將會被列入,否則略過。", - "filter_affliction": "如果複選異常狀態,例如: 毒、火燒,則所有會上毒或火燒的條目將會被列入,否則略過。注意,這邊的條件篩選指的是技能本身所帶的異常狀態,並非異常特攻。" + "filter_affliction": "如果複選異常狀態,例如: 毒、火燒,則所有會上毒或火燒的條目將會被列入,否則略過。注意,這邊的條件篩選指的是技能本身所帶的異常狀態,並非異常特攻。", + "filter_other": "其他篩選條件。如果有勾選限定共享技,則篩選、計算時,只會考慮、顯示共享技能。" }, "entry": { "not_cancelable": "此技能無法取消。", @@ -152,7 +155,8 @@ "punisher": "特攻 - {{punisherVal}}", "punisher_data": "BK 特攻 {{punishersBkPct}}% / 其他特攻 {{punishersOtherPct}}%", "other": "其它", - "other_data": "屬性增傷 +{{otherElemBonusPct}}% / HP {{otherCurrentHpPct}}%" + "other_data": "屬性增傷 +{{otherElemBonusPct}}% / HP {{otherCurrentHpPct}}%", + "shared_only": "只顯示共享技" }, "collapse": "ズームイン/アウト", "search": "搜尋" diff --git a/src/components/elements/gameData/skillAtk/inputMain.tsx b/src/components/elements/gameData/skillAtk/inputMain.tsx index 371d4e95..ceb7c6aa 100644 --- a/src/components/elements/gameData/skillAtk/inputMain.tsx +++ b/src/components/elements/gameData/skillAtk/inputMain.tsx @@ -163,6 +163,9 @@ const InputSummary = ({inputData}: InputSummaryProps) => { }, ) } + { + inputData.filterSharedOnly && <>
{t('game.skill_atk.summary.shared_only')} + }

); @@ -293,6 +296,7 @@ const InputComponent = ({collapsed, inputData, setInputData}: InputComponentProp ); @@ -319,17 +323,17 @@ type InputProps = { export const AttackingSkillInput = ({onSearchRequested}: InputProps) => { const {t} = useTranslation(); - const [collapsed, setCollapsed] = React.useState(false); + const [collapsed, setCollapsed] = React.useState(true); const [inputData, setInputData] = React.useState({ - atkInGame: 5000, + atkInGame: 7000, atkConditionalPct: 20, - atkBuffPct: 0, + atkBuffPct: 30, buffCount: 0, buffZoneSelf: 0, buffZoneAlly: 0, - exBlade: false, - exWand: false, + exBlade: true, + exWand: true, criticalRatePct: 4, criticalDamagePct: 0, criticalInspired: false, @@ -348,6 +352,7 @@ export const AttackingSkillInput = ({onSearchRequested}: InputProps) => { targetStateCode: ConditionCodes.NONE, filterElementCode: [], filterAfflictionCondCode: [], + filterSharedOnly: false, }); const onCollapseClicked = () => { diff --git a/src/components/elements/gameData/skillAtk/inputSection.tsx b/src/components/elements/gameData/skillAtk/inputSection.tsx index 3d6e042f..c156d0f2 100644 --- a/src/components/elements/gameData/skillAtk/inputSection.tsx +++ b/src/components/elements/gameData/skillAtk/inputSection.tsx @@ -1,4 +1,5 @@ import React, {ChangeEventHandler} from 'react'; +import {Form} from 'react-bootstrap'; import {ConditionCodes} from '../../../../constants/gameData'; import {CategorizedConditionEnums, ElementEnums} from '../../../../utils/services/resources/types'; @@ -38,6 +39,7 @@ export type InputData = { targetStateCode: ConditionCodes.NONE | ConditionCodes.TARGET_STATE_BK | ConditionCodes.TARGET_STATE_OD, filterElementCode: Array, filterAfflictionCondCode: Array, + filterSharedOnly: boolean, } type SectionProps = { @@ -272,11 +274,16 @@ export const SectionTarget = (props: SectionTargetProps) => { ); }; -type SectionFilterProps = SectionPropsWithCheckMulti & SectionPropsWithCondEnums & SectionPropsWithElemEnums; +type SectionFilterProps = + SectionPropsWithCheck & + SectionPropsWithCheckMulti & + SectionPropsWithCondEnums & + SectionPropsWithElemEnums; export const SectionFilter = (props: SectionFilterProps) => { const { inputData, + fnUpdateInputDataCheck, fnUpdateInputDataCheckMulti, conditionEnums, elementEnums, @@ -301,6 +308,14 @@ export const SectionFilter = (props: SectionFilterProps) => { enumEntries={conditionEnums.afflictions} type="checkbox" groupName="filterAfflictionCondCode" onChange={fnUpdateInputDataCheckMulti} isChecked={(code: number) => inputData.filterAfflictionCondCode.includes(code)}/> + + + + ); }; diff --git a/src/components/elements/gameData/skillAtk/outputMain.test.tsx b/src/components/elements/gameData/skillAtk/outputMain.test.tsx index ccce0a7f..0f54a4ff 100644 --- a/src/components/elements/gameData/skillAtk/outputMain.test.tsx +++ b/src/components/elements/gameData/skillAtk/outputMain.test.tsx @@ -30,6 +30,7 @@ const inputDataTemplate: InputData = { targetStateCode: ConditionCodes.NONE, filterElementCode: [], filterAfflictionCondCode: [], + filterSharedOnly: false, }; it('checks if the promise is returning data', async () => { @@ -47,6 +48,15 @@ it('checks if all entries are returned when no filter is applicable', async () = }); }); +it('checks if SS only filtering is working correctly', async () => { + await ResourceLoader.getAttackingSkillEntries((data) => data) + .then((data) => { + const dataFiltered = filterSkillEntries({...inputDataTemplate, filterSharedOnly: true}, data); + expect(dataFiltered.length).toBeGreaterThan(0); + expect(dataFiltered.map((entry) => entry.skill.sharable)).not.toContain(false); + }); +}); + it('checks if elemental filtering is working correctly', async () => { const enumElements = () => ResourceLoader.getEnumElements(); const attackingEntries = () => ResourceLoader.getAttackingSkillEntries(); diff --git a/src/components/elements/gameData/skillAtk/outputMain.tsx b/src/components/elements/gameData/skillAtk/outputMain.tsx index 86b48f97..768c3bb3 100644 --- a/src/components/elements/gameData/skillAtk/outputMain.tsx +++ b/src/components/elements/gameData/skillAtk/outputMain.tsx @@ -19,6 +19,11 @@ export type CalculatedData = { export const filterSkillEntries = (inputData: InputData, atkSkillEntries: Array) => { + // Filter shared skill only if set + if (inputData.filterSharedOnly) { + atkSkillEntries = atkSkillEntries.filter((entry) => entry.skill.sharable); + } + // Filter element if specified if (inputData.filterElementCode.length > 0) { atkSkillEntries = atkSkillEntries From d031f7a85f01523582f9408a65fe1ab7e3786ccb Mon Sep 17 00:00:00 2001 From: RaenonX Date: Sun, 24 Jan 2021 20:38:02 -0600 Subject: [PATCH 3/3] FIX - Unbalanced layout (closes #23) Signed-off-by: RaenonX --- src/components/elements/posts/analysis/skill.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/elements/posts/analysis/skill.tsx b/src/components/elements/posts/analysis/skill.tsx index 05d0bb26..cb7889a1 100644 --- a/src/components/elements/posts/analysis/skill.tsx +++ b/src/components/elements/posts/analysis/skill.tsx @@ -1,9 +1,9 @@ import React, {ChangeEventHandler} from 'react'; -import {useTranslation} from 'react-i18next'; import {Col, Form, Row} from 'react-bootstrap'; +import {useTranslation} from 'react-i18next'; +import {MarkdownInput} from '../../markdown/input'; import {Markdown} from '../../markdown/main'; -import {MarkdownInput} from '../../markdown/input'; import {PageAnchor} from '../pageAnchor'; @@ -104,7 +104,7 @@ export const AnalysisSkillOutput = (props: AnalysisSkillOutputProps) => { { (rotations || tips) && - + { rotations && <>