diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a64ccfac..f3065d38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,5 +19,11 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - run: npm ci - - run: npm start & sleep 5 && npm test + - run: npm install + - run: npm test + - name: Upload HTML report(backstop data) + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: report + path: backstop_data diff --git a/.gitignore b/.gitignore index 0f8d3cf7..549c139a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ node_modules # Generated files backstop_data dist +.cache diff --git a/.linthtmlrc.json b/.linthtmlrc.json index 774726eb..0f2047a7 100644 --- a/.linthtmlrc.json +++ b/.linthtmlrc.json @@ -1,49 +1,3 @@ { - "attr-bans": [ - "align", - "background", - "bgcolor", - "border", - "frameborder", - "style" - ], - "attr-name-ignore-regex": "viewBox", - "attr-no-dup": true, - "attr-quote-style": "double", - "attr-req-value": true, - "class-no-dup": true, - "doctype-first": true, - "doctype-html5": true, - "fig-req-figcaption": true, - "head-req-title": true, - "html-req-lang": true, - "id-class-style": false, - "id-no-dup": true, - "img-req-src": true, - "img-req-alt": "allownull", - "indent-width": 2, - "indent-style": "spaces", - "indent-width-cont": true, - "input-radio-req-name": true, - "spec-char-escape": true, - "tag-bans": [ - "b", - "i", - "u", - "center", - "style", - "marquee", - "font", - "s" - ], - "tag-name-lowercase": true, - "tag-name-match": true, - "tag-self-close": "never", - "tag-close": true, - "text-ignore-regex": "&", - "title-no-dup": true, - "line-end-style": "lf", - "attr-new-line": 2, - "attr-name-style": "dash", - "attr-no-unsafe-char": true + "extends": "@mate-academy/linthtml-config" } diff --git a/README.md b/README.md index 1f753740..bea4f6c6 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,13 @@ # Digits landing page -Implement landing page according to [Figma design](https://www.figma.com/file/yM9iS3NKeGOII5Bl7LOooG/Digits-Demo-%26-Preview-(Copy)?node-id=0%3A1) - Use BEM and SCSS -- Large screens 2560px -- Full HD 1920px -- The design 1600px -- Notebook 1280px -- Tablet 1024 -- Mobile (> 320px) -1. Implement the header with `nav`. -1. Implement `Good design meets great user experience` block. -1. Implement `Whatever work you do, we're able to help` block with reused 3 cards. -1. Implement `Simplicity meets innovative design` block. -1. Implement `What others are saying` block. -1. Implement `Ready to launch your next website?` block. -1. Implement footer with `Pages`, `Demos`, `Resources`. +landing page was implement according to [Figma design]() - Use BEM, SCSS, JS -## Instructions -1. **Fork** the repo. -2. **Clone** the forked one. (The project link should have your name but not `mate-academy`) -3. Run `npm install` (or just `npm i`). -4. Run `npm start`. -5. Open one more terminal window for the next steps. -6. `git checkout -b develop` - to create new branch and switch on it. -7. Write you code in `src` folder. -8. Run `npm run lint` and fix code style errors. -9. Run `npm run deploy` to deploy your solution to `gh-pages`. -10. `git add . && git commit -m 'solution'` to save your changes. -11. `git push origin develop` - to send you code for PR. -12. Create a Pull Request (PR) from your branch `develop` to branch `master` of original repo. -13. Replace `` with your Github username in the - [DEMO LINK](https://.github.io/Digits/). -14. Copy `DEMO LINK` to the PR description. +1. Implemented the header with `nav`. +2. Implemented `Good design meets great user experience` block. +3. Implemented `Whatever work you do, we're able to help` block with reused 3 cards. +4. Implemented `Simplicity meets innovative design` block. +5. Implemented `What others are saying` block. +6. Implemented `Ready to launch your next website?` block. +7. Implemented footer with `Pages`, `Demos`, `Resources`. -> To update you PR repeat steps 7-11. +[DEMO LINK](https://Dmytryi-Bashlai.github.io/Digits/). diff --git a/package-lock.json b/package-lock.json index e330c949..cbfd15e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -976,37 +976,55 @@ "dev": true }, "@linthtml/linthtml": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@linthtml/linthtml/-/linthtml-0.3.2.tgz", - "integrity": "sha512-3A/u+a+gdz3wcYgPV69RNb1+eREEwkjy9+595vK7yQnG9PXHhBP1EBEhkvzG3cpkf/Tzxi3JjxzH8NL6+dY65w==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@linthtml/linthtml/-/linthtml-0.8.3.tgz", + "integrity": "sha512-XEWciGfUsejgt7NaMI1n3JZExsijneOQ+JOwUslwy+ZYY6M2+JXs6PLSRQKd6+t0xp0aQ5LEhWgxK4dqi+wC7Q==", "dev": true, "requires": { "bulk-require": "1.0.1", - "chalk": "3.0.0", - "cosmiconfig": "6.0.0", - "globby": "10.0.1", - "htmlparser2": "3.10.1", + "chalk": "4.1.1", + "cosmiconfig": "7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.2", + "htmlparser2": "^6.1.0", + "ignore": "^5.1.4", + "inquirer": "^8.1.1", + "js-yaml": "^3.14.0", "kebabcase": "1.0.1", "lodash.pull": "4.1.0", - "lodash.template": ">=4.5.0", - "meow": "6.0.0", - "ora": "4.0.3", - "table-layout": "1.0.0" + "meow": "^9.0.0", + "ora": "^5.3.0", + "resolve-from": "^5.0.0", + "table-layout": "1.0.1" }, "dependencies": { "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, @@ -1026,15 +1044,30 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1051,39 +1084,87 @@ "dev": true }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "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.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { - "path-type": "^4.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" } }, "fill-range": { @@ -1096,27 +1177,25 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, "globby": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", - "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { - "@types/glob": "^7.1.1", "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", "slash": "^3.0.0" } }, @@ -1126,10 +1205,50 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, "ignore": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.6.tgz", - "integrity": "sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "inquirer": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-number": { @@ -1138,25 +1257,62 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" } }, "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -1166,10 +1322,61 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "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 + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rxjs": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.1.tgz", + "integrity": "sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -1183,6 +1390,12 @@ "requires": { "is-number": "^7.0.0" } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -1200,19 +1413,39 @@ } }, "@mate-academy/linthtml-config": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@mate-academy/linthtml-config/-/linthtml-config-0.0.1.tgz", - "integrity": "sha512-aMl7yGGVEvz0VvbWiRFKhSu52B/pz1zQCqOBUaZhAJsEvsizHhBLa1vIjf0QKGk098YqqHBJxk0YgJvDBpuelQ==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@mate-academy/linthtml-config/-/linthtml-config-0.0.2.tgz", + "integrity": "sha512-7INR19TGSfuLdkWdt3sbLRjOyZQX7TwzEVmdGrDr16uMFI9nH77a6ciGpAW57FVyg2tf59KGMH7iACwfohvc8g==", "dev": true }, "@mate-academy/scripts": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-0.2.0.tgz", - "integrity": "sha512-17i1Kdc+8D6CqypX+0MsHXIt299nA90JVUU2CyNb/Rrw2oPMUVwImbHCK6dJYJlZ6GRF2CV5zRBauVHLmldPFw==", + "version": "0.9.14", + "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-0.9.14.tgz", + "integrity": "sha512-UPbzJQJSxXCyYGwoaW5yvQ3tXV1sE7/Ceg9ilEbk08Uw9MIXztvQ0OQVv8AoWDnS53n3JFwoTvpmbsUt6WcS0A==", "dev": true, "requires": { + "@octokit/rest": "^17.11.2", + "@types/get-port": "^4.2.0", "commander": "^5.1.0", - "fs-extra": "^9.0.0" + "cross-env": "^7.0.3", + "dotenv": "^8.6.0", + "fs-extra": "^9.1.0", + "get-port": "^5.1.1", + "open": "^7.4.2" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + } } }, "@mate-academy/stylelint-config": { @@ -1286,6 +1519,235 @@ "fastq": "^1.6.0" } }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + }, + "dependencies": { + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + } + } + }, + "@octokit/core": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-2.5.4.tgz", + "integrity": "sha512-HCp8yKQfTITYK+Nd09MHzAlP1v3Ii/oCohv0/TW9rhSLvzb98BOVs2QmVYuloE6a3l6LsfyGIwb6Pc4ycgWlIQ==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/graphql": "^4.3.1", + "@octokit/request": "^5.4.0", + "@octokit/types": "^5.0.0", + "before-after-hook": "^2.1.0", + "universal-user-agent": "^5.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + }, + "dependencies": { + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + } + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz", + "integrity": "sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg==", + "dev": true, + "requires": { + "@octokit/types": "^4.1.6", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/types": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-4.1.10.tgz", + "integrity": "sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + } + } + }, + "@octokit/rest": { + "version": "17.11.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-17.11.2.tgz", + "integrity": "sha512-4jTmn8WossTUaLfNDfXk4fVJgbz5JgZE8eCs4BvIb52lvIH8rpVMD1fgRCrHbSd6LRPE5JFZSfAEtszrOq3ZFQ==", + "dev": true, + "requires": { + "@octokit/core": "^2.4.3", + "@octokit/plugin-paginate-rest": "^2.2.0", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "3.17.0" + } + }, + "@octokit/types": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", + "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + }, "@parcel/fs": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", @@ -1383,29 +1845,15 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@types/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-Iv2FAb5RnIk/eFO2CTu8k+0VMmIR15pKbcqRWi+s3ydW+aKXlN2yemP92SrO++ERyJx+p6Ie1ggbLBMbU1SjiQ==", "dev": true, "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "get-port": "*" } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, "@types/minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", @@ -1625,9 +2073,9 @@ "dev": true }, "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true }, "array-equal": { @@ -1986,6 +2434,12 @@ "tweetnacl": "^0.14.3" } }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -2001,6 +2455,40 @@ "file-uri-to-path": "1.0.0" } }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -2469,9 +2957,9 @@ } }, "cli-spinners": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", - "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, "cli-width": { @@ -2774,6 +3262,58 @@ "sha.js": "^2.4.8" } }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3249,6 +3789,12 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -3475,6 +4021,15 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -3906,6 +4461,21 @@ "safe-buffer": "^5.1.1" } }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "execall": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", @@ -4310,15 +4880,15 @@ "dev": true }, "fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", - "universalify": "^1.0.0" + "universalify": "^2.0.0" } }, "fs.realpath": { @@ -4442,6 +5012,15 @@ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -5195,6 +5774,15 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -5252,6 +5840,12 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5370,6 +5964,12 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "is-string": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", @@ -5400,6 +6000,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", @@ -5556,6 +6162,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -5590,13 +6202,13 @@ } }, "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" + "universalify": "^2.0.0" } }, "jsprim": { @@ -5688,12 +6300,6 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, "lodash.clone": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", @@ -5718,25 +6324,6 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -5787,6 +6374,12 @@ "yallist": "^2.1.2" } }, + "macos-release": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", + "dev": true + }, "magic-string": { "version": "0.22.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", @@ -5865,30 +6458,25 @@ "dev": true }, "meow": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-6.0.0.tgz", - "integrity": "sha512-x4rYsjigPBDAxY+BGuK83YLhUIqui5wYyZoqb6QJCUOs+0fiYq+i/NV4Jt8OgIfObZFxG9iTyvLDu4UTohGTFw==", + "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.1.1", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.0.0", - "minimist-options": "^4.0.1", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.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.8.1", - "yargs-parser": "^16.1.0" + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -5899,6 +6487,15 @@ "path-exists": "^4.0.0" } }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -5908,15 +6505,25 @@ "p-locate": "^4.1.0" } }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" } }, "p-limit": { @@ -5944,14 +6551,14 @@ "dev": true }, "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -5973,6 +6580,30 @@ "type-fest": "^0.6.0" }, "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "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", @@ -5990,17 +6621,36 @@ "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 + } } }, - "yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "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 + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -6214,6 +6864,39 @@ "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==", "dev": true }, + "node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, "node-forge": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", @@ -6568,6 +7251,15 @@ "sort-keys": "^1.0.0" } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -6741,6 +7433,27 @@ "mimic-fn": "^1.0.0" } }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -6765,41 +7478,41 @@ } }, "ora": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", - "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "requires": { - "chalk": "^3.0.0", + "bl": "^4.1.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", + "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -6837,64 +7550,13 @@ "dev": true }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "mimic-fn": { @@ -6903,16 +7565,10 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -6929,18 +7585,18 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -6960,6 +7616,16 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -6976,6 +7642,12 @@ "os-tmpdir": "^1.0.0" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -8128,6 +8800,16 @@ } } }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -9656,6 +10338,12 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -10288,14 +10976,14 @@ } }, "table-layout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.0.tgz", - "integrity": "sha512-o8V8u943KXX9gLNK/Ss1n6Nn4YhpyY/RRnp3hKv/zTA+SXYiQnzJQlR8CZQf1RqYqgkiWMJ54Mv+Vq9Kfzxz1A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", + "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", "dev": true, "requires": { - "array-back": "^3.1.0", + "array-back": "^4.0.1", "deep-extend": "~0.6.0", - "typical": "^5.0.0", + "typical": "^5.2.0", "wordwrapjs": "^4.0.0" } }, @@ -10545,9 +11233,9 @@ } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "typedarray": { @@ -10767,10 +11455,19 @@ "unist-util-is": "^4.0.0" } }, + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "dev": true, + "requires": { + "os-name": "^3.1.0" + } + }, "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unquote": { @@ -11066,6 +11763,15 @@ "string-width": "^1.0.2 || 2" } }, + "windows-release": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", + "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "dev": true, + "requires": { + "execa": "^1.0.0" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -11073,13 +11779,13 @@ "dev": true }, "wordwrapjs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz", - "integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dev": true, "requires": { "reduce-flatten": "^2.0.0", - "typical": "^5.0.0" + "typical": "^5.2.0" } }, "wrappy": { @@ -11147,6 +11853,12 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", "dev": true + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } } diff --git a/package.json b/package.json index 39ef54b8..ac605d72 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,10 @@ "author": "Mate Academy", "license": "GPL-3.0", "devDependencies": { - "@linthtml/linthtml": "^0.3.2", + "@linthtml/linthtml": "^0.8.3", "@mate-academy/eslint-config": "*", - "@mate-academy/linthtml-config": "0.0.1", - "@mate-academy/scripts": "^0.2.0", + "@mate-academy/linthtml-config": "0.0.2", + "@mate-academy/scripts": "^0.9.14", "@mate-academy/stylelint-config": "0.0.9", "colors": "^1.3.3", "eslint": "^5.16.0", diff --git a/src/fonts/Halyard/Halyard Display Black Italic.ttf b/src/fonts/Halyard/Halyard Display Black Italic.ttf deleted file mode 100644 index 0d08a71d..00000000 Binary files a/src/fonts/Halyard/Halyard Display Black Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Black.ttf b/src/fonts/Halyard/Halyard Display Black.ttf deleted file mode 100644 index 4fe590df..00000000 Binary files a/src/fonts/Halyard/Halyard Display Black.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Bold Italic.ttf b/src/fonts/Halyard/Halyard Display Bold Italic.ttf deleted file mode 100644 index 3a7ee4cf..00000000 Binary files a/src/fonts/Halyard/Halyard Display Bold Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Bold.ttf b/src/fonts/Halyard/Halyard Display Bold.ttf deleted file mode 100644 index e9f0d26b..00000000 Binary files a/src/fonts/Halyard/Halyard Display Bold.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Book Italic.ttf b/src/fonts/Halyard/Halyard Display Book Italic.ttf deleted file mode 100644 index 28c1741b..00000000 Binary files a/src/fonts/Halyard/Halyard Display Book Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Book.ttf b/src/fonts/Halyard/Halyard Display Book.ttf deleted file mode 100644 index 454de523..00000000 Binary files a/src/fonts/Halyard/Halyard Display Book.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display ExtraLight Italic.ttf b/src/fonts/Halyard/Halyard Display ExtraLight Italic.ttf deleted file mode 100644 index 3493652a..00000000 Binary files a/src/fonts/Halyard/Halyard Display ExtraLight Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display ExtraLight.ttf b/src/fonts/Halyard/Halyard Display ExtraLight.ttf deleted file mode 100644 index f87784a8..00000000 Binary files a/src/fonts/Halyard/Halyard Display ExtraLight.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Italic.ttf b/src/fonts/Halyard/Halyard Display Italic.ttf deleted file mode 100644 index e1bd1227..00000000 Binary files a/src/fonts/Halyard/Halyard Display Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Light Italic.ttf b/src/fonts/Halyard/Halyard Display Light Italic.ttf deleted file mode 100644 index 7832a1c4..00000000 Binary files a/src/fonts/Halyard/Halyard Display Light Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Light.ttf b/src/fonts/Halyard/Halyard Display Light.ttf deleted file mode 100644 index 9de8b698..00000000 Binary files a/src/fonts/Halyard/Halyard Display Light.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Medium Italic.ttf b/src/fonts/Halyard/Halyard Display Medium Italic.ttf deleted file mode 100644 index 8fe9e4c3..00000000 Binary files a/src/fonts/Halyard/Halyard Display Medium Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Medium.ttf b/src/fonts/Halyard/Halyard Display Medium.ttf deleted file mode 100644 index 235e0510..00000000 Binary files a/src/fonts/Halyard/Halyard Display Medium.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display Regular.ttf b/src/fonts/Halyard/Halyard Display Regular.ttf deleted file mode 100644 index 0c736304..00000000 Binary files a/src/fonts/Halyard/Halyard Display Regular.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display SemiBold Italic.ttf b/src/fonts/Halyard/Halyard Display SemiBold Italic.ttf deleted file mode 100644 index b8875c6b..00000000 Binary files a/src/fonts/Halyard/Halyard Display SemiBold Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Display SemiBold.ttf b/src/fonts/Halyard/Halyard Display SemiBold.ttf deleted file mode 100644 index f0a69397..00000000 Binary files a/src/fonts/Halyard/Halyard Display SemiBold.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Black Italic.ttf b/src/fonts/Halyard/Halyard Micro Black Italic.ttf deleted file mode 100644 index bbc1b1d4..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Black Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Black.ttf b/src/fonts/Halyard/Halyard Micro Black.ttf deleted file mode 100644 index 1a40e2eb..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Black.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Bold Italic.ttf b/src/fonts/Halyard/Halyard Micro Bold Italic.ttf deleted file mode 100644 index ee660b5e..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Bold Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Bold.ttf b/src/fonts/Halyard/Halyard Micro Bold.ttf deleted file mode 100644 index 98c02d25..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Bold.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Book Italic.ttf b/src/fonts/Halyard/Halyard Micro Book Italic.ttf deleted file mode 100644 index 9677b30e..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Book Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Book.ttf b/src/fonts/Halyard/Halyard Micro Book.ttf deleted file mode 100644 index fea84d15..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Book.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro ExtraLight Italic.ttf b/src/fonts/Halyard/Halyard Micro ExtraLight Italic.ttf deleted file mode 100644 index b4281891..00000000 Binary files a/src/fonts/Halyard/Halyard Micro ExtraLight Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro ExtraLight.ttf b/src/fonts/Halyard/Halyard Micro ExtraLight.ttf deleted file mode 100644 index 4489646f..00000000 Binary files a/src/fonts/Halyard/Halyard Micro ExtraLight.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Italic.ttf b/src/fonts/Halyard/Halyard Micro Italic.ttf deleted file mode 100644 index 06a530b2..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Light Italic.ttf b/src/fonts/Halyard/Halyard Micro Light Italic.ttf deleted file mode 100644 index f5e6b3a2..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Light Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Light.ttf b/src/fonts/Halyard/Halyard Micro Light.ttf deleted file mode 100644 index ec6555e5..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Light.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Medium Italic.ttf b/src/fonts/Halyard/Halyard Micro Medium Italic.ttf deleted file mode 100644 index 66b2225a..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Medium Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Medium.ttf b/src/fonts/Halyard/Halyard Micro Medium.ttf deleted file mode 100644 index 8e04d09f..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Medium.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro Regular.ttf b/src/fonts/Halyard/Halyard Micro Regular.ttf deleted file mode 100644 index add23a06..00000000 Binary files a/src/fonts/Halyard/Halyard Micro Regular.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro SemiBold Italic.ttf b/src/fonts/Halyard/Halyard Micro SemiBold Italic.ttf deleted file mode 100644 index c556bc2f..00000000 Binary files a/src/fonts/Halyard/Halyard Micro SemiBold Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Micro SemiBold.ttf b/src/fonts/Halyard/Halyard Micro SemiBold.ttf deleted file mode 100644 index 3505aa55..00000000 Binary files a/src/fonts/Halyard/Halyard Micro SemiBold.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Bold Italic.ttf b/src/fonts/Halyard/Halyard Text Bold Italic.ttf deleted file mode 100644 index 5fdd86b4..00000000 Binary files a/src/fonts/Halyard/Halyard Text Bold Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Bold.ttf b/src/fonts/Halyard/Halyard Text Bold.ttf deleted file mode 100644 index e8094a69..00000000 Binary files a/src/fonts/Halyard/Halyard Text Bold.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Book Italic.ttf b/src/fonts/Halyard/Halyard Text Book Italic.ttf deleted file mode 100644 index e353ac61..00000000 Binary files a/src/fonts/Halyard/Halyard Text Book Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Book Regular.ttf b/src/fonts/Halyard/Halyard Text Book Regular.ttf deleted file mode 100644 index 1f5041f2..00000000 Binary files a/src/fonts/Halyard/Halyard Text Book Regular.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text ExtraLight Italic.ttf b/src/fonts/Halyard/Halyard Text ExtraLight Italic.ttf deleted file mode 100644 index 98957edc..00000000 Binary files a/src/fonts/Halyard/Halyard Text ExtraLight Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text ExtraLight.ttf b/src/fonts/Halyard/Halyard Text ExtraLight.ttf deleted file mode 100644 index 020d5496..00000000 Binary files a/src/fonts/Halyard/Halyard Text ExtraLight.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Italic.ttf b/src/fonts/Halyard/Halyard Text Italic.ttf deleted file mode 100644 index 4a6336cf..00000000 Binary files a/src/fonts/Halyard/Halyard Text Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Light Italic.ttf b/src/fonts/Halyard/Halyard Text Light Italic.ttf deleted file mode 100644 index 49714d85..00000000 Binary files a/src/fonts/Halyard/Halyard Text Light Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Light.ttf b/src/fonts/Halyard/Halyard Text Light.ttf deleted file mode 100644 index 6e1a3376..00000000 Binary files a/src/fonts/Halyard/Halyard Text Light.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Medium Italic.ttf b/src/fonts/Halyard/Halyard Text Medium Italic.ttf deleted file mode 100644 index 809f37af..00000000 Binary files a/src/fonts/Halyard/Halyard Text Medium Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Medium.ttf b/src/fonts/Halyard/Halyard Text Medium.ttf deleted file mode 100644 index 8323a061..00000000 Binary files a/src/fonts/Halyard/Halyard Text Medium.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text Regular.ttf b/src/fonts/Halyard/Halyard Text Regular.ttf deleted file mode 100644 index f3efafd3..00000000 Binary files a/src/fonts/Halyard/Halyard Text Regular.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text SemiBold Italic.ttf b/src/fonts/Halyard/Halyard Text SemiBold Italic.ttf deleted file mode 100644 index 9ad9e3d0..00000000 Binary files a/src/fonts/Halyard/Halyard Text SemiBold Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/Halyard Text SemiBold.ttf b/src/fonts/Halyard/Halyard Text SemiBold.ttf deleted file mode 100644 index 079cfaa3..00000000 Binary files a/src/fonts/Halyard/Halyard Text SemiBold.ttf and /dev/null differ diff --git a/src/fonts/Halyard/HalyardText Black Italic.ttf b/src/fonts/Halyard/HalyardText Black Italic.ttf deleted file mode 100644 index 52bc246e..00000000 Binary files a/src/fonts/Halyard/HalyardText Black Italic.ttf and /dev/null differ diff --git a/src/fonts/Halyard/HalyardText Black.ttf b/src/fonts/Halyard/HalyardText Black.ttf deleted file mode 100644 index 644047ae..00000000 Binary files a/src/fonts/Halyard/HalyardText Black.ttf and /dev/null differ diff --git a/src/index.html b/src/index.html index 5d357bd6..0532bfd1 100644 --- a/src/index.html +++ b/src/index.html @@ -1,13 +1,711 @@ - + - Title + Digits + + - -

Hello Mate Academy

+ + +
+
+
+
+

+ Good design meets + great user experience +

+

For everyone, from beginners to experts

+ +
+
+ Graphic image social network +
+
+
+
+
+

+ Trusted by forward-thinking software teams around the world +

+ +
+
+
+ +
+
+
+
+

+ Simplicity meets innovative design +

+

+ It's really easy to start using Digits. + Install the theme, choose a demo and + start designing the future of your business! +

+ + Buy Digits + +
+
+
+ Design templates +
+
+
+
+

What others are saying

+
+
+
+
+

+ Completely beautiful website and amazing support! This is my second website from this author and I + love both of the sites so much and she has helped me so well when I needed it! +

+ + User photo + + + Happy User + + + tempy.club + +
+
+
+
+

+ Really easy to use and customize. easy to understand. Darinka helped me with my site! She answers + very quickly, a good service! Thank you very much! +

+ + User photo + + + Happy User + + + tempy.club + +
+
+
+
+

+ Really pleasing to look at! Documentation (including installationinstructions) are clear and that is + coming from a relatively newWordPress user. +

+ + User photo + + + Happy User + + + tempy.club + +
+
+
+
+
+
+
+
+
+

+ Ready to launch
your next website? +

+
+ + Get in touch now + +

Or, take a peek inside our design studio

+
+
+
+
+
+ diff --git a/src/scripts/main.js b/src/scripts/main.js index ad9a93a7..9c22ec89 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1 +1,121 @@ 'use strict'; + +const isMobile = { + Android: function() { + return navigator.userAgent.match(/Android/i); + }, + BlackBerry: function() { + return navigator.userAgent.match(/BlackBerry/i); + }, + iOS: function() { + return navigator.userAgent.match(/iPhone|iPad|iPod/i); + }, + Opera: function() { + return navigator.userAgent.match(/Opera Mini/i); + }, + Windows: function() { + return navigator.userAgent.match(/IEMobile/i); + }, + any: function() { + return ( + isMobile.Android() + || isMobile.BlackBerry() + || isMobile.iOS() + || isMobile.Opera() + || isMobile.Windows() + ); + }, +}; + +window.onload = function() { + document.addEventListener('click', documentActions); + + // Actions (делегирование события click) + function documentActions(e) { + const targetElement = e.target; + + if (isMobile.any()) { + document.body.classList.add('_touch'); + + if (targetElement.classList.contains('menu__arrow')) { + targetElement.closest('.menu__item').classList.toggle('_active'); + } + + if ( + (!targetElement.closest('.menu__item') + && document.querySelectorAll('.menu__item._active').length > 0) + ) { + _removeClasses( + document.querySelectorAll('.menu__item._active'), + '_active' + ); + } + + if (targetElement.classList.contains('menu-footer__title')) { + targetElement.closest('.menu-footer__column') + .classList.toggle('_active'); + } + + if ( + (!targetElement.closest('.menu-footer__column') + && document.querySelectorAll('.menu-footer__column._active').length > 0) + ) { + _removeClasses( + document.querySelectorAll('.menu-footer__column._active'), + '_active' + ); + } + } + } +}; + +function _removeClasses(el, className) { + for (let i = 0; i < el.length; i++) { + el[i].classList.remove(className); + } +} + +// Menu +const iconMenu = document.querySelector('.icon-menu'); +const menuBody = document.querySelector('.menu__body'); + +if (iconMenu) { + iconMenu.addEventListener('click', function(e) { + document.body.classList.toggle('_lock'); + iconMenu.classList.toggle('_active'); + menuBody.classList.toggle('_active'); + }); +} + +// Прокрутка при клике +const menuLinks = document.querySelectorAll('.menu__link[data-goto]'); + +function onMenuLinkClick(e) { + const menuLink = e.target; + + if (menuLink.dataset.goto && document.querySelector(menuLink.dataset.goto)) { + const gotoBlock = document.querySelector(menuLink.dataset.goto); + const gotoBlockValue + = gotoBlock.getBoundingClientRect().top + + window.pageYOffset + - document.querySelector('.header__body').offsetHeight; + + if (iconMenu.classList.contains('_active')) { + document.body.classList.remove('_lock'); + iconMenu.classList.remove('_active'); + menuBody.classList.remove('_active'); + } + + window.scrollTo({ + top: gotoBlockValue, + behavior: 'smooth', + }); + e.preventDefault(); + } +} + +if (menuLinks.length > 0) { + menuLinks.forEach((menuLink) => { + menuLink.addEventListener('click', onMenuLinkClick); + }); +} diff --git a/src/styles/_fonts.scss b/src/styles/_fonts.scss index 2067b3fc..38366488 100644 --- a/src/styles/_fonts.scss +++ b/src/styles/_fonts.scss @@ -1,6 +1,29 @@ @font-face { - font-family: "Roboto"; - src: url("../fonts/Roboto-Regular-webfont.woff") format("woff"); + font-family: "Halyard Display"; + src: url("../fonts/HalyardDisplay-Medium.woff2") format("woff2"), + url("../fonts/HalyardDisplay-Medium.woff") format("woff"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Halyard Text"; + src: url("../fonts/HalyardText-Regular.woff2") format("woff2"), + url("../fonts/HalyardText-Regular.woff") format("woff"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "icons-font"; + src: url("../fonts/icons-font.eot?jm7dph"); + src: url("../fonts/icons-font.eot?jm7dph#iefix") format("embedded-opentype"), + url("../fonts/icons-font.ttf?jm7dph") format("truetype"), + url("../fonts/icons-font.woff?jm7dph") format("woff"), + url("../fonts/icons-font.svg?jm7dph#icons-font") format("svg"); font-weight: normal; font-style: normal; + font-display: block; } diff --git a/src/styles/_typography.scss b/src/styles/_typography.scss index 1837eb46..81721ad7 100644 --- a/src/styles/_typography.scss +++ b/src/styles/_typography.scss @@ -1,3 +1,3 @@ -h1 { - @extend %h1; -} +// h1 { +// @extend %h1; +// } diff --git a/src/styles/_utils.scss b/src/styles/_utils.scss index 1366a06a..1fc77b56 100644 --- a/src/styles/_utils.scss +++ b/src/styles/_utils.scss @@ -1,3 +1,2 @@ @import "utils/vars"; @import "utils/mixins"; -@import "utils/extends"; diff --git a/src/styles/main.scss b/src/styles/main.scss index 0f8860e4..0d9c71f4 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss @@ -1,7 +1,1234 @@ +@import "typography"; @import "utils"; @import "fonts"; -@import "typography"; -body { - background: $c-gray; +//#region reset +*, +*::before, +*::after { + margin: 0; + padding: 0; + border: 0; + box-sizing: border-box; +} + +button { + cursor: pointer; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: inherit; + font-size: inherit; +} + +ol li, +ul li { + list-style: none; +} + +img { + vertical-align: top; +} + +a, +a:visited, +a:hover { + text-decoration: none; +} +//#endregion + +//#region icons-font +%ic { + font-family: "icons-font", sans-serif; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +[class^="_icon-"], +[class*=" _icon-"] { + &::before { + @extend %ic; + display: block; + } +} + +._icon-arrow:before { + content: "\e900"; +} + +._icon-dribbble:before { + content: "\e901"; +} + +._icon-envato:before { + content: "\e902"; +} + +._icon-facebook:before { + content: "\e903"; +} + +._icon-instagram:before { + content: "\e904"; +} + +._icon-send:before { + content: "\e905"; + font-size: 15px; + color: #53c07e; + margin-right: 18px; +} + +._icon-twitter:before { + content: "\e906"; +} +//#endregion + +.page, +.page__body { + height: 100%; + font-family: $mainFont; + font-size: 18px; + color: $textColorMain; + scroll-behavior: smooth; +} + +.page__body { + &._lock { + overflow: hidden; + } +} + +.ibg { + position: relative; + &__img { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + object-fit: cover; + } +} + +._container { + max-width: $maxWidthContainer + px; + margin: 0 auto; + padding: 0 15px; +} + +.button { + display: inline-flex; + align-items: center; + height: 50px; + padding: 0 12px; + color: #fff; + font-family: inherit; + font-size: $secondaryFont; + border-radius: 100px; + border: 1px solid transparent; + background-color: $mainBlue; + transition: all 0.3s ease 0s; + + &--white { + color: $textColorMain; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + background-color: #fff; + } + + &--big { + height: 56px; + font-family: $secondaryFont; + } + + &--small { + height: 40px; + } + + @media (any-hover: hover) { + &:hover { + border: 1px solid $mainBlue; + color: $mainBlue; + box-shadow: 4px 4px 10px 2px rgba(34, 60, 80, 0.2); + background: #fff; + } + } + + &:active { + box-shadow: 0 0 10px 2px rgba(34, 60, 80, 0.2); + } +} + +.icon-menu { + display: none; + @media (max-width: ($md3+px)) { + display: block; + position: relative; + z-index: 5; + flex: 0 0 26px; + height: 16px; + cursor: pointer; + span { + transition: all 0.3s ease 0s; + top: calc(50% - 1px); + left: 0; + position: absolute; + width: 100%; + height: 2px; + background-color: #000; + &:first-child { + top: 0; + } + &:last-child { + top: auto; + bottom: 0; + } + } + &._active { + span { + transform: scale(0); + &:first-child { + transform: rotate(-45deg); + top: calc(50% - 1px); + } + &:last-child { + transform: rotate(45deg); + bottom: calc(50% - 1px); + } + } + } + } +} + +//#region header +.header { + position: absolute; + width: 100%; + top: 0; + left: 0; + + &__wrapper { + position: fixed; + width: 100%; + top: 0; + left: 0; + z-index: 50; + background-color: rgba(255, 255, 255, 0.7); + } + + &__body { + display: flex; + align-items: center; + min-height: 50px; + padding: 5px 0; + + @media (min-width: ($md3+px)) { + min-height: 80px; + } + } + + &__logo { + position: relative; + z-index: 5; + margin-right: 85 / 1180 * 100%; + } +} + +.menu { + width: 100%; + + &__body { + @media (max-width: ($md3+px)) { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: -100%; + padding: 60px 15px 30px; + background: linear-gradient( + 180deg, + rgba(242, 249, 255, 0.65) 0%, + #f2f9ff 100% + ); + overflow: auto; + transition: left 0.3s ease 0s; + + &::before { + content: ""; + position: fixed; + z-index: 2; + width: 100%; + min-height: 80px; + top: 0; + left: -100%; + background-color: #fff; + transition: left 0.3s ease 0s; + + @media (max-width: ($md3+px)) { + min-height: 50px; + } + } + &._active { + left: 0; + &::before { + left: 0; + } + } + } + + @media (min-width: ($md3+px)) { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + } + } + + &__list { + @media (min-width: ($md3+px)) { + display: flex; + flex-wrap: wrap; + flex: 1 0 auto; + } + + @media (max-width: ($md3+px)) { + margin-bottom: 10px; + } + } + + &__item { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + &:not(:last-child) { + margin-bottom: 5px; + } + + @media (min-width: ($md3+px)) { + position: relative; + margin-right: 24px; + &:not(:last-child) { + margin-bottom: 0; + } + } + + @media (min-width: ($md2+px)) { + margin-right: 47px; + + &:last-child { + margin-right: 24px; + } + } + + @media (max-width: ($md3+px)) { + &._active { + .menu__sub-list { + position: relative; + opacity: 1; + visibility: visible; + } + + .menu__arrow { + transform: rotate(-180deg); + } + + .menu__arrow, + .menu__link { + color: $mainBlue; + } + } + } + + @media (any-hover: hover) { + &:hover { + .menu__sub-list { + opacity: 1; + visibility: visible; + pointer-events: auto; + transform: translateY(0); + } + + .menu__arrow { + transform: rotate(-180deg); + } + + ._icon-arrow:before, + .menu__link { + color: $mainBlue; + } + } + } + } + + &__link { + padding: 5px 0; + font-size: 16px; + color: $textColorSecond; + transition: color 0.3s ease 0s; + + @media (max-width: ($md3+px)) { + font-size: 22px; + font-weight: 600; + } + } + + &__arrow { + display: flex; + align-items: center; + padding: 8px; + font-size: 7px; + color: $textColorSecond; + background: transparent; + transition: transform 0.3s ease 0s; + + @media (max-width: ($md3+px)) { + font-size: 12px; + &._active { + transform: rotate(-180deg); + } + } + } + + &__wrap { + @media (max-width: ($md3+px)) { + position: relative; + flex: 1 1 100%; + margin: 0 -15px; + overflow: hidden; + } + } + + &__sub-list { + padding: 10px; + background-color: #999fe3; + transition: all 0.3s ease 0s; + + @media (max-width: ($md3+px)) { + position: absolute; + opacity: 0; + visibility: hidden; + } + + @media (min-width: ($md3+px)) { + position: absolute; + top: 100%; + right: 0; + z-index: 5; + min-width: 200px; + opacity: 0; + visibility: hidden; + pointer-events: none; + border-radius: 10px; + transform: translateY(10px); + } + } + + &__sub-item { + &:not(:last-child) { + margin-bottom: 5px; + } + } + + &__sub-link { + font-size: 16px; + color: #fff; + padding: 5px; + + @media (max-width: ($md3+px)) { + font-size: 18px; + } + + @media (any-hover: hover) { + &:hover { + text-decoration: underline; + } + } + } +} + +.contacts { + @media (min-width: ($md3+px)) { + display: flex; + flex-wrap: wrap; + justify-content: end; + align-items: center; + } + + @media (max-width: ($md3+px)) { + max-width: 200px; + } + + &__phone { + display: inline-flex; + padding: 5px; + margin: 0 0 0 -5px; + font-size: 16px; + color: $textColorSecond; + transition: color 0.3s ease 0s; + + @media (max-width: ($md3+px)) { + font-style: 18px; + font-weight: 600; + margin-bottom: 10px; + } + + @media (max-width: 883px) { + margin-bottom: 3px; + } + + @media (any-hover: hover) { + &:hover { + color: $mainBlue; + } + } + } + + &__button { + transition: all 0.3s ease 0s; + + @media (min-width: ($md3+px)) { + @include adaptiv-value("margin-left", 24, 16, 1); + } + } +} +//#endregion + +.page__body._touch { + .menu__item._active { + .menu__sub-list { + opacity: 1; + visibility: visible; + pointer-events: auto; + transform: translateY(0); + } + + .menu__arrow { + transform: rotate(-180deg); + } + + .menu__arrow, + .menu__link { + color: $mainBlue; + } + } +} + +.section { + &__home { + margin-bottom: 52px; + } + + &__company { + @include adaptiv-value("margin-bottom", 150, 20, 1); + } + + &__products { + @include adaptiv-value("margin-bottom", 232, 40, 1); + } +} + +.title-section { + font-family: $secondaryFont; + text-align: center; + font-weight: 500; + @include adaptiv-value("font-size", 48, 30, 1); + line-height: 125%; + color: $textColorSecond; + + &--white { + color: #fff; + } +} + +//#region home +.home { + @media (max-width: ($md3+px)) { + padding-top: 194px; + } + + @include adaptiv-value("padding-top", 224, 70, 1); + background: linear-gradient( + 180deg, + rgba(242, 249, 255, 0.12) 0%, + #f2f9ff 100% + ); + &__body { + max-width: 500px; + margin: 0 auto; + } + + &__title { + @include adaptiv-value("font-size", 56, 28, 1); + line-height: 105%; + @include adaptiv-value("margin-bottom", 27, 12, 1); + } + + &__text { + text-align: center; + line-height: 150%; + @include adaptiv-value("margin-bottom", 29, 12, 1); + } + + &__buttons { + display: flex; + flex-direction: column; + align-items: center; + + @media (min-width: ($md4+px)) { + flex-direction: row; + justify-content: center; + align-items: center; + } + } + + &__button { + padding: 0 40px; + &:not(:last-child) { + margin-bottom: 16px; + } + + @media (min-width: ($md4+px)) { + &:not(:last-child) { + margin-right: 22px; + margin-bottom: 0; + } + } + } + + &__image { + padding-bottom: 49.6%; + transform: translateY(32px); + + & > img { + object-fit: contain; + } + } +} +//#endregion + +//#region company +.company { + text-align: center; + + &__text { + font-size: 16px; + line-height: 27 / 16 * 100%; + color: rgba(69, 88, 128, 0.5); + @include adaptiv-value("margin-bottom", 29, 4, 1); + } + + &__list { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + @media (min-width: ($md4+px)) { + display: flex; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + } + } + + &__link { + @include adaptiv-value("margin-top", 20, 16, 1); + + @media (min-width: ($md4+px)) { + &:not(:last-child) { + @include adaptiv-value("margin-right", 72, 10, 1); + } + } + + @include any-hover(transform, scale(1.1)); + } +} + +//#endregion + +//#region benefits +.benefits { + @include adaptiv-value("padding-bottom", 150, 30, 1); + + &__title { + max-width: 500px; + margin: 0 auto; + @include adaptiv-value("margin-bottom", 126, 70, 1); + } + + &__body { + position: relative; + @media (min-width: ($md2+px)) { + display: flex; + justify-content: space-between; + } + } + + &__photos { + position: relative; + min-height: 677px; + flex: 0 1 574px; + margin-bottom: 30px; + + @media (min-width: ($md4+px)) { + background: url("../images/about/Graphic.png") 0 100% no-repeat; + background-size: contain; + } + + @media (min-width: ($md2+px)) { + margin-bottom: 0; + margin-right: 20px; + } + } + + &__rectangle { + border-radius: 4px; + + @media (max-width: ($md4+px)) { + margin: 0 auto; + &:not(:last-child) { + margin-bottom: 15px; + } + } + + @media (min-width: ($md4+px)) { + position: absolute; + margin-bottom: 0; + } + + &--1 { + @media (max-width: (365px)) { + position: relative; + left: 0; + width: 100%; + } + + top: 0; + right: 22 / 574 * 100%; + width: 331px; + height: 357px; + background: #999fe3; + } + + &--2 { + bottom: 110px; + left: 38 / 574 * 100%; + width: 266px; + height: 308px; + background: #fed892; + } + + &--3 { + right: 134 / 574 * 100%; + bottom: 33px; + width: 201px; + height: 200px; + background: #f47b9e; + } + } + + &__image { + & > img { + object-fit: contain; + } + + &--1 { + bottom: 76px; + left: 28px; + padding-bottom: 131%; + + @media (max-width: (365px)) { + position: absolute; + left: 0; + width: 100%; + bottom: 0; + } + } + + &--2 { + bottom: -13px; + left: -21px; + padding-bottom: 111%; + } + + &--3 { + bottom: 41px; + right: -20px; + padding-bottom: 120%; + + @media (max-width: ($md4+px)) { + right: -31px; + bottom: 9px; + padding-bottom: 104%; + } + } + } + + &__column { + flex: 0 1 405px; + } + + &__item { + &:not(:last-child) { + @include adaptiv-value("margin-bottom", 46, 20, 1); + } + } +} + +.item-benefits { + display: flex; + justify-content: flex-start; + + &:not(:last-child) { + @include adaptiv-value("padding-bottom", 46, 20, 1); + border-bottom: 1px solid rgba(69, 88, 128, 0.2); + } + + @media (any-hover: hover) { + &:hover { + .item-benefits__title, + .item-benefits__text { + color: $mainBlue; + } + + .item-benefits__icon { + box-shadow: 0 0 20px 2px rgba(34, 60, 80, 0.2); + transform: scale(1.1); + } + } + } + + &__icon { + display: block; + flex-shrink: 0; + @include adaptiv-value("flex-basis", 58, 38, 1); + @include adaptiv-value("height", 58, 38, 1); + @include adaptiv-value("margin-right", 42, 10, 1); + transition: all 0.3s ease 0s; + } + + &__title { + display: block; + @include adaptiv-value("padding-bottom", 34, 16, 1); + font-family: $secondaryFont; + font-weight: 500; + font-size: 22px; + line-height: 125%; + color: $textColorSecond; + transition: color 0.3s ease 0s; + } + + &__text { + display: block; + line-height: 150%; + transition: color 0.3s ease 0s; + } +} +//#endregion + +//#region products +.products { + background: #fff9ea; + @include adaptiv-value("padding-top", 150, 20, 1); + max-height: 1001px; + overflow: hidden; + + &__container { + @include adaptiv-value("margin-bottom", 37, 16, 1); + } + + &__body { + text-align: center; + } + + &__title, + &__text { + @include adaptiv-value("margin-bottom", 40, 16, 1); + } + + &__text { + font-size: 21px; + line-height: 150%; + max-width: 410px; + margin-left: auto; + margin-right: auto; + } + + &__button { + padding: 0 18px; + } + + &__image { + padding-bottom: 39%; + } +} +//#endregion + +//#region blog +.blog { + &__title { + @include adaptiv-value("margin-bottom", 56, 20, 1); + } + + &__body { + @include adaptiv-value("padding-bottom", 150, 30, 1); + } + + &__cards { + display: flex; + flex-wrap: wrap; + margin: 0 -14 / 1180 * 100%; + } + + &__card { + padding: 0 14 / 1180 * 100%; + + @media (max-width: ($md2+px)) { + &:not(:last-child) { + @include adaptiv-value("margin-bottom", 30, 14, 1); + } + } + + @media (min-width: ($md3+px)) { + flex: 0 1 50%; + } + + @media (min-width: ($md2+px)) { + flex: 0 1 33.33%; + } + } +} + +.card { + &__body { + display: flex; + flex-direction: column; + align-items: center; + height: 100%; + @include adaptiv-value("padding-top", 36, 20, 1); + @include adaptiv-value("padding-bottom", 36, 20, 1); + @include adaptiv-value("padding-left", 43, 26, 1); + @include adaptiv-value("padding-right", 43, 26, 1); + border: 1px solid rgba(69, 88, 128, 0.2); + border-radius: 4px; + transition: box-shadow 0.3s ease 0s; + + @media (any-hover: hover) { + &:hover { + box-shadow: 0 0 20px 2px rgba(34, 60, 80, 0.2); + } + } + } + + &__text { + flex: 1 1 auto; + line-height: 180%; + @include adaptiv-value("margin-bottom", 39, 20, 1); + } + + &__user-photo { + display: flex; + @include adaptiv-value("padding-bottom", 23, 16, 1); + @include any-hover(transform, scale(1.1)); + } + + &__user-name { + display: block; + font-size: 22px; + line-height: 125%; + font-weight: 500; + color: $textColorSecond; + @include any-hover(color, $mainBlue); + } + + &__user-from { + display: block; + line-height: 180%; + @include any-hover(color, $mainBlue); + } +} +//#endregion + +//#region contact-us +.contact-us { + background-color: #3751ff; + @include adaptiv-value("padding-top", 88, 30, 1); + @include adaptiv-value("padding-bottom", 113, 30, 1); + + &__body { + @media (min-width: ($md3+px)) { + display: flex; + justify-content: space-between; + align-items: center; + } + } + + &__title { + margin-bottom: 20px; + } + + &__content { + display: flex; + flex-direction: column; + align-items: center; + + @media (min-width: ($md3+px)) { + align-items: end; + justify-content: center; + } + } + + &__button { + margin-bottom: 19px; + padding: 0 50px 0 28px; + font-family: $secondaryFont; + font-size: 18px; + font-weight: 500; + line-height: 110%; + color: $textColorSecond; + transition: all 0.3s ease 0s; + + @media (any-hover: hover) { + &:hover { + background-color: $mainBlue; + color: #fff; + border: 1px solid #fff; + + &::before { + transform: scale(1.2); + } + } + } + } + + &__text { + font-size: 16px; + line-height: 125%; + text-align: right; + color: #dfe0eb; + } +} +//#endregion + +//#region footer +.footer { + &__body { + @include adaptiv-value("padding-top", 112, 30, 1); + @include adaptiv-value("padding-bottom", 100, 30, 1); + } + + &__bottom { + text-align: center; + + @media (min-width: ($md3+px)) { + display: flex; + justify-content: space-between; + } + } +} + +.main-footer { + @include adaptiv-value("margin-bottom", 130, 20, 1); + + @media (min-width: ($md3+px)) { + display: flex; + } + + &__about-us { + @media (max-width: ($md3+px)) { + margin-bottom: 20px; + } + + @media (min-width: ($md3+px)) { + flex: 1 1 488px; + @include adaptiv-value("padding-right", 203, 15, 1); + } + } + + &__logo { + display: inline-block; + @include adaptiv-value("margin-bottom", 20, 6, 1); + } +} + +.menu-footer { + @media (min-width: ($md3+px)) { + display: flex; + } + + @media (min-width: ($md3+px)) { + flex: 1 1 692px; + flex-wrap: no-wrap; + } + + &__column { + &--pages { + @media (min-width: ($md3+px)) { + flex-basis: 227px; + } + } + + &--demos { + @media (min-width: ($md3+px)) { + flex-basis: 248px; + } + } + + &--resources { + @media (min-width: ($md3+px)) { + flex-basis: 217px; + } + } + } + + &__title { + @include adaptiv-value("padding-bottom", 20, 8, 1); + @extend ._icon-arrow; + &::before { + display: none; + @extend %ic; + font-size: 10px; + transition: all 0.3s ease 0s; + } + + @media (max-width: ($md3+px)) { + display: flex; + width: 100%; + flex-direction: row-reverse; + justify-content: space-between; + align-items: center; + transition: all 0.3s ease 0s; + + &._icon-arrow::before { + display: block; + } + } + + &._active { + color: $mainBlue; + + &::before { + transform: rotate(-180deg); + color: $mainBlue; + } + } + } + + &__list { + @media (max-width: ($md3+px)) { + position: absolute; + top: 100%; + opacity: 0; + visibility: hidden; + margin-bottom: 8px; + transition: all 0.3s ease 0s; + } + } + + &__item { + width: max-content; + + &:not(:last-child) { + @include adaptiv-value("margin-bottom", 11, 0, 1); + } + + @media (any-hover: hover) { + &:hover { + .menu-footer__link { + color: $mainBlue; + } + } + } + } + + &__link { + display: block; + width: max-content; + color: inherit; + transition: color 0.3s ease 0s; + } +} + +.title-footer { + font-family: $secondaryFont; + font-size: 22px; + line-height: 125%; + font-weight: 500; + color: $textColorSecond; + background: transparent; +} + +.soc-footer { + display: flex; + padding: 6px 0; + @include adaptiv-value("margin-bottom", 24, 8, 1); +} + +.soc-footer > .icon { + font-size: 16px; + color: $textColorSecond; + transition: all 0.3s ease 0s; + + @media (max-width: ($md4+px)) { + font-size: 18px; + } + + &:not(:last-child) { + margin-right: 24px; + } + + @media (any-hover: hover) { + &:hover { + color: $mainBlue; + transform: scale(1.2); + } + } +} + +.bottom-footer { + &__copy { + font-size: 14px; + } + + &__link { + font-size: 14px; + color: inherit; + padding: 5px 0; + transition: color 0.3s ease 0s; + &:not(:last-child) { + @include adaptiv-value("margin-right", 38, 16, 1); + } + + @include any-hover(color, $mainBlue); + } +} +//#endregion + +.menu-footer__column._active { + .menu-footer__list { + position: relative; + top: 0; + opacity: 1; + visibility: visible; + } + + ._icon-arrow::before { + color: $mainBlue; + transform: rotate(-180deg); + } + + .menu-footer__title { + color: $mainBlue; + } } diff --git a/src/styles/utils/_extends.scss b/src/styles/utils/_extends.scss index a1a5dd0e..d14d21cd 100644 --- a/src/styles/utils/_extends.scss +++ b/src/styles/utils/_extends.scss @@ -1,4 +1,4 @@ -%h1 { - font-family: "Roboto", sans-serif; - font-weight: 400; -} +// %h1 { +// font-family: "Roboto", sans-serif; +// font-weight: 400; +// } diff --git a/src/styles/utils/_mixins.scss b/src/styles/utils/_mixins.scss index 80c79780..68c60e90 100644 --- a/src/styles/utils/_mixins.scss +++ b/src/styles/utils/_mixins.scss @@ -1,6 +1,44 @@ -@mixin hover($_property, $_toValue) { +@mixin any-hover($_property, $_toValue) { transition: #{$_property} 0.3s; - &:hover { - #{$_property}: $_toValue; + @media (any-hover: hover) { + &:hover { + #{$_property}: $_toValue; + } + } +} + +@mixin onDesktop { + @media (min-width: 1054px) { + @content; + } +} + +//Адаптивное свойство +@mixin adaptiv-value($property, $startSize, $minSize, $type) { + $addSize: $startSize - $minSize; + @if $type==1 { + //Только если меньше контейнера + #{$property}: $startSize + px; + @media (max-width: #{$maxWidthContainer + px}) { + #{$property}: calc( + #{$minSize + px} + #{$addSize} * + ((100vw - 320px) / #{$maxWidthContainer - 320}) + ); + } + } + @else if $type==2 { + //Только если больше контейнера + #{$property}: $startSize + px; + @media (min-width: #{$maxWidthContainer + px}) { + #{$property}: calc( + #{$minSize + px} + #{$addSize} * ((100vw - 320px) / #{$maxWidth - 320}) + ); + } + } + @else { + //Всегда + #{$property}: calc( + #{$minSize + px} + #{$addSize} * ((100vw - 320px) / #{$maxWidth - 320}) + ); } } diff --git a/src/styles/utils/_vars.scss b/src/styles/utils/_vars.scss index aeb006ff..946f97cb 100644 --- a/src/styles/utils/_vars.scss +++ b/src/styles/utils/_vars.scss @@ -1 +1,14 @@ -$c-gray: #eee; +// $minWidth: 320px; +$maxWidth: 1600; +$maxWidthContainer: 1210; +$md1: $maxWidthContainer + px; +$md2: 991.98; +$md3: 767.98; +$md4: 479.98; + +$mainFont: "Halyard Text", sans-serif; +$secondaryFont: "Halyard Display", sans-serif; +$fontSize: 18px; +$mainBlue: #3751ff; +$textColorMain: #455880; +$textColorSecond:#1e266d;