diff --git a/.eleventy.js b/.eleventy.js index ac66a10..5435196 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -13,6 +13,12 @@ module.exports = function (eleventyConfig) { eleventyConfig.addPassthroughCopy({ "./projects/FrontendMentor": "FrontendMentor", }); + eleventyConfig.addPassthroughCopy({ + "./projects/random": "others", + }); + eleventyConfig.addPassthroughCopy({ + "./projects/devchallenges": "devchallenges", + }); eleventyConfig.addPassthroughCopy({ "./src/assets/faviconstuff": "/", }); diff --git a/package-lock.json b/package-lock.json index f1a14b8..6e7f5cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,53 +8,61 @@ "name": "rmcg.dev", "version": "1.1.0", "license": "ISC", + "dependencies": { + "@11ty/eleventy-img": "^2.0.1", + "@fontsource/black-ops-one": "^4.5.7", + "@fontsource/source-sans-pro": "^4.5.10", + "open-props": "^1.3.9" + }, "devDependencies": { "@11ty/eleventy": "^1.0.0" } }, "node_modules/@11ty/dependency-tree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.0.tgz", - "integrity": "sha512-tYrGX3Tvccufy2jaYDkYpjBmVP1LeQq6b/d0r4GYThTXL4f3ZR7yMAl/0r8h9xvnsP+gkO53wfnV7s8cXcCtEg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", "dev": true }, "node_modules/@11ty/eleventy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.0.tgz", - "integrity": "sha512-UMZghkMFwovu3Vh6DzjJ9GbcBnlE3nydGmLAti2AB1d6etQE+jXgfuHNxOyV1em33ywsBgGUCtLmLHaaTSU+Nw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", + "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", "dev": true, "dependencies": { - "@11ty/dependency-tree": "^2.0.0", + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-utils": "^1.0.1", "@iarna/toml": "^2.2.5", "@sindresorhus/slugify": "^1.1.2", - "browser-sync": "^2.27.7", - "chokidar": "^3.5.2", - "debug": "^4.3.3", + "browser-sync": "^2.27.10", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", "dependency-graph": "^0.11.0", - "ejs": "^3.1.6", - "fast-glob": "^3.2.9", - "graceful-fs": "^4.2.9", + "ejs": "^3.1.8", + "fast-glob": "^3.2.11", + "graceful-fs": "^4.2.10", "gray-matter": "^4.0.3", "hamljs": "^0.6.2", "handlebars": "^4.7.7", "is-glob": "^4.0.3", - "kleur": "^4.1.4 ", - "liquidjs": "^9.32.0", + "kleur": "^4.1.5", + "liquidjs": "^9.40.0", "lodash": "^4.17.21", - "luxon": "^2.3.0", + "luxon": "^2.5.0", "markdown-it": "^12.3.2", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "moo": "^0.5.1", "multimatch": "^5.0.0", "mustache": "^4.2.0", "normalize-path": "^3.0.0", "nunjucks": "^3.2.3", - "path-to-regexp": "^6.2.0", + "path-to-regexp": "^6.2.1", "please-upgrade-node": "^3.2.0", "pretty": "^2.0.0", "pug": "^3.0.2", - "recursive-copy": "^2.0.13", - "semver": "^7.3.5", + "recursive-copy": "^2.0.14", + "semver": "^7.3.7", "slugify": "^1.6.5" }, "bin": { @@ -68,19 +76,78 @@ "url": "https://opencollective.com/11ty" } }, + "node_modules/@11ty/eleventy-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-3.0.0.tgz", + "integrity": "sha512-qJvfb331rYQAmlCS71Ygg0/XHUdB4/qXBOLsG0DJ1m61WL5JNha52OtKVeQq34u2J2Nfzim+X4TIL/+QyesB7Q==", + "dependencies": { + "debug": "^4.3.3", + "flat-cache": "^3.0.4", + "node-fetch": "^2.6.7", + "p-queue": "^6.6.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-img": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-2.0.1.tgz", + "integrity": "sha512-l30E+TszoovF/NK0WRc1oQoI42VxmYyM3O9cPiS20alSBHucX92RFdwl9HMDyRoh1g+App3+PomFIa5FKkb1Dw==", + "dependencies": { + "@11ty/eleventy-fetch": "^3.0.0", + "debug": "^4.3.3", + "image-size": "^1.0.1", + "p-queue": "^6.6.2", + "sharp": "^0.30.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", - "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -90,18 +157,29 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@fontsource/black-ops-one": { + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@fontsource/black-ops-one/-/black-ops-one-4.5.8.tgz", + "integrity": "sha512-Met9VQzBG/qVCabxl1VwSotu1oN/+HdGbAnJ+P40NRJ6KWYmmqW8XVCeRzWxmTBr27IB860TYgDGlgI2QHswpQ==" + }, + "node_modules/@fontsource/source-sans-pro": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@fontsource/source-sans-pro/-/source-sans-pro-4.5.11.tgz", + "integrity": "sha512-f7iw44q1EjBv3MNcHCGAgrW/QVyweaEouFsJzykPhTOGnZFSwFJRISToXornOmuAy7xUUGiVdqOLiykgZoYB8A==" + }, "node_modules/@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -184,25 +262,10 @@ "node": ">=8" } }, - "node_modules/@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/@socket.io/component-emitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", - "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==", - "dev": true - }, - "node_modules/@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, "node_modules/@types/cookie": { @@ -224,9 +287,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.22.tgz", - "integrity": "sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==", + "version": "18.7.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", "dev": true }, "node_modules/a-sync-waterfall": { @@ -333,7 +396,7 @@ "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -351,7 +414,7 @@ "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "node_modules/assert-never": { @@ -361,15 +424,15 @@ "dev": true }, "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "node_modules/async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, "engines": { "node": ">=0.8.0" @@ -396,17 +459,29 @@ "node": ">= 10.0.0" } }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/base64id": { "version": "2.0.0", @@ -420,7 +495,7 @@ "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "node_modules/binary-extensions": { @@ -432,11 +507,20 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -455,13 +539,13 @@ } }, "node_modules/browser-sync": { - "version": "2.27.9", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.9.tgz", - "integrity": "sha512-3zBtggcaZIeU9so4ja9yxk7/CZu9B3DOL6zkxFpzHCHsQmkGBPVXg61jItbeoa+WXgNLnr1sYES/2yQwyEZ2+w==", + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", + "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", "dev": true, "dependencies": { - "browser-sync-client": "^2.27.9", - "browser-sync-ui": "^2.27.9", + "browser-sync-client": "^2.27.10", + "browser-sync-ui": "^2.27.10", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", "chokidar": "^3.5.1", @@ -478,7 +562,7 @@ "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", - "portscanner": "2.1.1", + "portscanner": "2.2.0", "qs": "6.2.3", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", @@ -499,24 +583,25 @@ } }, "node_modules/browser-sync-client": { - "version": "2.27.9", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.9.tgz", - "integrity": "sha512-FHW8kydp7FXo6jnX3gXJCpHAHtWNLK0nx839nnK+boMfMI1n4KZd0+DmTxHBsHsF3OHud4V4jwoN8U5HExMIdQ==", + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", + "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", "dev": true, "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", "mitt": "^1.1.3", - "rxjs": "^5.5.6" + "rxjs": "^5.5.6", + "typescript": "^4.6.2" }, "engines": { "node": ">=8.0.0" } }, "node_modules/browser-sync-ui": { - "version": "2.27.9", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.9.tgz", - "integrity": "sha512-rsduR2bRIwFvM8CX6iY/Nu5aWub0WB9zfSYg9Le/RV5N5DEyxJYey0VxdfWCnzDOoelassTDzYQo+r0iJno3qw==", + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", + "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", "dev": true, "dependencies": { "async-each-series": "0.1.1", @@ -530,15 +615,38 @@ "node_modules/bs-recipes": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", "dev": true }, "node_modules/bs-snippet-injector": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", "dev": true }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -580,7 +688,7 @@ "node_modules/character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", "dev": true, "dependencies": { "is-regex": "^1.0.3" @@ -613,6 +721,11 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -624,11 +737,22 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -639,8 +763,16 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/commander": { "version": "5.1.0", @@ -651,22 +783,15 @@ "node": ">= 6" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/condense-newlines": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", "dev": true, "dependencies": { "extend-shallow": "^2.0.1", @@ -680,7 +805,7 @@ "node_modules/condense-newlines/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -702,7 +827,7 @@ "node_modules/connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -735,7 +860,7 @@ "node_modules/connect/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/constantinople": { @@ -770,11 +895,24 @@ "node": ">= 0.10" } }, + "node_modules/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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -787,6 +925,28 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -808,13 +968,21 @@ "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", "dev": true }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, "node_modules/dev-ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", "dev": true, "bin": { "dev-ip": "lib/dev-ip.js" @@ -832,7 +1000,7 @@ "node_modules/doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", "dev": true }, "node_modules/easy-extender": { @@ -892,16 +1060,16 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "dependencies": { - "jake": "^10.6.1" + "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" @@ -919,16 +1087,24 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/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==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -947,30 +1123,23 @@ } }, "node_modules/engine.io-client": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", - "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", "dev": true, "dependencies": { - "@socket.io/component-emitter": "~3.0.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", + "engine.io-parser": "~5.0.3", "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0", - "yeast": "0.1.2" + "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", "dev": true, - "dependencies": { - "@socket.io/base64-arraybuffer": "~1.0.2" - }, "engines": { "node": ">=10.0.0" } @@ -1008,7 +1177,7 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "node_modules/escape-string-regexp": { @@ -1039,7 +1208,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "engines": { "node": ">= 0.6" @@ -1048,13 +1217,20 @@ "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -1089,12 +1265,33 @@ } }, "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/fill-range": { @@ -1112,7 +1309,7 @@ "node_modules/finalhandler": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -1139,13 +1336,63 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true, "funding": [ { @@ -1165,16 +1412,21 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "engines": { "node": ">= 0.6" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "node_modules/fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -1185,8 +1437,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -1218,34 +1469,38 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1263,10 +1518,31 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/gray-matter": { @@ -1287,7 +1563,7 @@ "node_modules/hamljs": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", - "integrity": "sha1-e3EWz22+cnjkKz9u+HJaM+F3yOM=", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", "dev": true }, "node_modules/handlebars": { @@ -1326,7 +1602,7 @@ "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -1338,18 +1614,12 @@ "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1437,10 +1707,43 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1449,8 +1752,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1459,14 +1761,17 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -1487,9 +1792,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1511,7 +1816,7 @@ "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1520,7 +1825,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1590,7 +1895,7 @@ "node_modules/is-whitespace": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1599,19 +1904,25 @@ "node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "node_modules/jake": { - "version": "10.8.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", - "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "dependencies": { - "async": "0.9.x", + "async": "^3.2.3", "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" @@ -1624,15 +1935,15 @@ } }, "node_modules/js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", "dev": true, "dependencies": { - "config-chain": "^1.1.12", + "config-chain": "^1.1.13", "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" + "glob": "^8.0.3", + "nopt": "^6.0.0" }, "bin": { "css-beautify": "js/bin/css-beautify.js", @@ -1646,7 +1957,7 @@ "node_modules/js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", "dev": true }, "node_modules/js-yaml": { @@ -1665,7 +1976,7 @@ "node_modules/jsonfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -1674,7 +1985,7 @@ "node_modules/jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", "dev": true, "dependencies": { "is-promise": "^2.0.0", @@ -1684,7 +1995,7 @@ "node_modules/junk": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", - "integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI=", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1700,9 +2011,9 @@ } }, "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, "engines": { "node": ">=6" @@ -1724,9 +2035,9 @@ } }, "node_modules/liquidjs": { - "version": "9.36.0", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.36.0.tgz", - "integrity": "sha512-HbU4xBsY1r3ZEORTgPsiluXsOtMx8iI0MqTsPejgIk+sIgta5wQUYsoQgUPuGKWVHKKKMO9PidiMEPKlePl8rg==", + "version": "9.42.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.0.tgz", + "integrity": "sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow==", "dev": true, "bin": { "liquid": "bin/liquid.js", @@ -1811,13 +2122,13 @@ "node_modules/lodash.deburr": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", "dev": true }, "node_modules/lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", "dev": true }, "node_modules/lru-cache": { @@ -1831,9 +2142,9 @@ } }, "node_modules/luxon": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.3.1.tgz", - "integrity": "sha512-I8vnjOmhXsMSlNMZlMkSOvgrxKJl0uOsEzdGgGNZuZPaS9KlefpE9KV95QFftlJSC+1UyCC9/I69R02cz/zcCA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", "dev": true, "engines": { "node": ">=12" @@ -1864,7 +2175,7 @@ "node_modules/maximatch": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", "dev": true, "dependencies": { "array-differ": "^1.0.0", @@ -1879,7 +2190,7 @@ "node_modules/maximatch/node_modules/array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1888,7 +2199,7 @@ "node_modules/maximatch/node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "dependencies": { "array-uniq": "^1.0.1" @@ -1900,7 +2211,7 @@ "node_modules/maximatch/node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1909,7 +2220,7 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "node_modules/merge2": { @@ -1922,13 +2233,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -1964,11 +2275,21 @@ "node": ">= 0.6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1979,8 +2300,7 @@ "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/mitt": { "version": "1.2.0", @@ -1989,17 +2309,22 @@ "dev": true }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "node_modules/moo": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", @@ -2009,8 +2334,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multimatch": { "version": "5.0.0", @@ -2040,6 +2364,11 @@ "mustache": "bin/mustache" } }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -2055,19 +2384,54 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/nopt": { + "node_modules/node-abi": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.24.0.tgz", + "integrity": "sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", + "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "dependencies": { - "abbrev": "1" + "abbrev": "^1.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-path": { @@ -2107,7 +2471,7 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2116,7 +2480,7 @@ "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "dependencies": { "ee-first": "1.1.1" @@ -2128,16 +2492,20 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, + "node_modules/open-props": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/open-props/-/open-props-1.4.14.tgz", + "integrity": "sha512-EkTUczMzty8mIvnWGpC41ELIejARiuljsXTEz7YDRKJn5dJ1/njsLTpNhn2rsM3JSW95p4G94ojsgzxbaiFmNA==" + }, "node_modules/openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", "dev": true }, "node_modules/opn": { @@ -2152,17 +2520,39 @@ "node": ">=4" } }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", - "dev": true + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", - "dev": true + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/parseurl": { "version": "1.3.3", @@ -2176,12 +2566,20 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -2189,9 +2587,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz", - "integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", "dev": true }, "node_modules/picomatch": { @@ -2209,7 +2607,7 @@ "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2225,12 +2623,12 @@ } }, "node_modules/portscanner": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", - "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, "dependencies": { - "async": "1.5.2", + "async": "^2.6.0", "is-number-like": "^1.0.3" }, "engines": { @@ -2239,15 +2637,43 @@ } }, "node_modules/portscanner/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/pretty": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", "dev": true, "dependencies": { "condense-newlines": "^0.2.1", @@ -2270,19 +2696,19 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "node_modules/pug": { @@ -2409,15 +2835,32 @@ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/qs": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", "dev": true, "engines": { "node": ">=0.6" } }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2462,6 +2905,33 @@ "node": ">= 0.8" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2494,7 +2964,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2503,16 +2973,16 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2526,7 +2996,7 @@ "node_modules/resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", "dev": true, "dependencies": { "debug": "^2.2.0", @@ -2548,7 +3018,7 @@ "node_modules/resp-modifier/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/reusify": { @@ -2573,6 +3043,26 @@ "rimraf": "bin.js" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -2599,7 +3089,7 @@ "node_modules/rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", "dev": true }, "node_modules/rxjs": { @@ -2614,6 +3104,25 @@ "npm": ">=2.0.0" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2634,10 +3143,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2651,14 +3159,13 @@ "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, "node_modules/semver/node_modules/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, "dependencies": { "yallist": "^4.0.0" }, @@ -2669,8 +3176,7 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/send": { "version": "0.16.2", @@ -2708,7 +3214,7 @@ "node_modules/send/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -2717,7 +3223,7 @@ "node_modules/send/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "dependencies": { "depd": "~1.1.2", @@ -2732,13 +3238,13 @@ "node_modules/send/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "node_modules/send/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/send/node_modules/setprototypeof": { @@ -2759,7 +3265,7 @@ "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -2786,7 +3292,7 @@ "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -2795,7 +3301,7 @@ "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "dependencies": { "depd": "~1.1.2", @@ -2810,13 +3316,13 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { @@ -2828,7 +3334,7 @@ "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "engines": { "node": ">= 0.6" @@ -2852,7 +3358,7 @@ "node_modules/server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", "dev": true }, "node_modules/setprototypeof": { @@ -2861,16 +3367,110 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "node_modules/sharp": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", + "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.1", + "node-addon-api": "^5.0.0", + "prebuild-install": "^7.1.1", + "semver": "^7.3.7", + "simple-get": "^4.0.1", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/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, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, "node_modules/sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", "dev": true }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2886,66 +3486,50 @@ } }, "node_modules/socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", - "socket.io-parser": "~4.0.4" + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", "dev": true }, "node_modules/socket.io-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", - "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", + "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", "dev": true, "dependencies": { - "@socket.io/component-emitter": "~3.0.0", - "backo2": "~1.0.2", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.1.1", - "parseuri": "0.0.6", - "socket.io-parser": "~4.1.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-client/node_modules/socket.io-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", - "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.0.0", - "debug": "~4.3.1" + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", "dev": true, "dependencies": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" }, "engines": { @@ -2964,13 +3548,13 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", "dev": true, "engines": { "node": ">= 0.6" @@ -2979,7 +3563,7 @@ "node_modules/stream-throttle": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, "dependencies": { "commander": "^2.2.0", @@ -2998,6 +3582,14 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3027,12 +3619,20 @@ "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3060,12 +3660,38 @@ "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tfunk": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", @@ -3079,7 +3705,7 @@ "node_modules/tfunk/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3088,7 +3714,7 @@ "node_modules/tfunk/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3097,7 +3723,7 @@ "node_modules/tfunk/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { "ansi-styles": "^2.2.1", @@ -3113,7 +3739,7 @@ "node_modules/tfunk/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -3122,7 +3748,7 @@ "node_modules/tfunk/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -3134,7 +3760,7 @@ "node_modules/tfunk/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, "engines": { "node": ">=0.8.0" @@ -3143,7 +3769,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -3173,9 +3799,38 @@ "node_modules/token-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", "dev": true }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/ua-parser-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", @@ -3202,9 +3857,9 @@ "dev": true }, "node_modules/uglify-js": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", - "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", "dev": true, "optional": true, "bin": { @@ -3226,16 +3881,21 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "engines": { "node": ">= 0.4.0" @@ -3244,7 +3904,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "engines": { "node": ">= 0.8" @@ -3253,12 +3913,41 @@ "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/with": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", @@ -3277,7 +3966,7 @@ "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "node_modules/wrap-ansi": { @@ -3300,8 +3989,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "8.2.3", @@ -3345,13 +4033,13 @@ "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, "node_modules/yargs": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", - "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -3367,90 +4055,135 @@ } }, "node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { "node": ">=12" } - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true } }, "dependencies": { "@11ty/dependency-tree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.0.tgz", - "integrity": "sha512-tYrGX3Tvccufy2jaYDkYpjBmVP1LeQq6b/d0r4GYThTXL4f3ZR7yMAl/0r8h9xvnsP+gkO53wfnV7s8cXcCtEg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", "dev": true }, "@11ty/eleventy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.0.tgz", - "integrity": "sha512-UMZghkMFwovu3Vh6DzjJ9GbcBnlE3nydGmLAti2AB1d6etQE+jXgfuHNxOyV1em33ywsBgGUCtLmLHaaTSU+Nw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", + "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", "dev": true, "requires": { - "@11ty/dependency-tree": "^2.0.0", + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-utils": "^1.0.1", "@iarna/toml": "^2.2.5", "@sindresorhus/slugify": "^1.1.2", - "browser-sync": "^2.27.7", - "chokidar": "^3.5.2", - "debug": "^4.3.3", + "browser-sync": "^2.27.10", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", "dependency-graph": "^0.11.0", - "ejs": "^3.1.6", - "fast-glob": "^3.2.9", - "graceful-fs": "^4.2.9", + "ejs": "^3.1.8", + "fast-glob": "^3.2.11", + "graceful-fs": "^4.2.10", "gray-matter": "^4.0.3", "hamljs": "^0.6.2", "handlebars": "^4.7.7", "is-glob": "^4.0.3", - "kleur": "^4.1.4 ", - "liquidjs": "^9.32.0", + "kleur": "^4.1.5", + "liquidjs": "^9.40.0", "lodash": "^4.17.21", - "luxon": "^2.3.0", + "luxon": "^2.5.0", "markdown-it": "^12.3.2", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "moo": "^0.5.1", "multimatch": "^5.0.0", "mustache": "^4.2.0", "normalize-path": "^3.0.0", "nunjucks": "^3.2.3", - "path-to-regexp": "^6.2.0", + "path-to-regexp": "^6.2.1", "please-upgrade-node": "^3.2.0", "pretty": "^2.0.0", "pug": "^3.0.2", - "recursive-copy": "^2.0.13", - "semver": "^7.3.5", + "recursive-copy": "^2.0.14", + "semver": "^7.3.7", "slugify": "^1.6.5" } }, + "@11ty/eleventy-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-3.0.0.tgz", + "integrity": "sha512-qJvfb331rYQAmlCS71Ygg0/XHUdB4/qXBOLsG0DJ1m61WL5JNha52OtKVeQq34u2J2Nfzim+X4TIL/+QyesB7Q==", + "requires": { + "debug": "^4.3.3", + "flat-cache": "^3.0.4", + "node-fetch": "^2.6.7", + "p-queue": "^6.6.2" + } + }, + "@11ty/eleventy-img": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-img/-/eleventy-img-2.0.1.tgz", + "integrity": "sha512-l30E+TszoovF/NK0WRc1oQoI42VxmYyM3O9cPiS20alSBHucX92RFdwl9HMDyRoh1g+App3+PomFIa5FKkb1Dw==", + "requires": { + "@11ty/eleventy-fetch": "^3.0.0", + "debug": "^4.3.3", + "image-size": "^1.0.1", + "p-queue": "^6.6.2", + "sharp": "^0.30.3" + } + }, + "@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0" + } + }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true }, "@babel/parser": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", - "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", "dev": true }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, + "@fontsource/black-ops-one": { + "version": "4.5.8", + "resolved": "https://registry.npmjs.org/@fontsource/black-ops-one/-/black-ops-one-4.5.8.tgz", + "integrity": "sha512-Met9VQzBG/qVCabxl1VwSotu1oN/+HdGbAnJ+P40NRJ6KWYmmqW8XVCeRzWxmTBr27IB860TYgDGlgI2QHswpQ==" + }, + "@fontsource/source-sans-pro": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@fontsource/source-sans-pro/-/source-sans-pro-4.5.11.tgz", + "integrity": "sha512-f7iw44q1EjBv3MNcHCGAgrW/QVyweaEouFsJzykPhTOGnZFSwFJRISToXornOmuAy7xUUGiVdqOLiykgZoYB8A==" + }, "@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -3511,22 +4244,10 @@ } } }, - "@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true - }, "@socket.io/component-emitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", - "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==", - "dev": true - }, - "@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, "@types/cookie": { @@ -3548,9 +4269,9 @@ "dev": true }, "@types/node": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.22.tgz", - "integrity": "sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==", + "version": "18.7.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", "dev": true }, "a-sync-waterfall": { @@ -3630,7 +4351,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "arrify": { @@ -3642,7 +4363,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "assert-never": { @@ -3652,15 +4373,15 @@ "dev": true }, "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true }, "axios": { @@ -3681,17 +4402,15 @@ "@babel/types": "^7.9.6" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "base64id": { "version": "2.0.0", @@ -3702,7 +4421,7 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "binary-extensions": { @@ -3711,11 +4430,20 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3731,13 +4459,13 @@ } }, "browser-sync": { - "version": "2.27.9", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.9.tgz", - "integrity": "sha512-3zBtggcaZIeU9so4ja9yxk7/CZu9B3DOL6zkxFpzHCHsQmkGBPVXg61jItbeoa+WXgNLnr1sYES/2yQwyEZ2+w==", + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", + "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", "dev": true, "requires": { - "browser-sync-client": "^2.27.9", - "browser-sync-ui": "^2.27.9", + "browser-sync-client": "^2.27.10", + "browser-sync-ui": "^2.27.10", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", "chokidar": "^3.5.1", @@ -3754,7 +4482,7 @@ "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", - "portscanner": "2.1.1", + "portscanner": "2.2.0", "qs": "6.2.3", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", @@ -3769,21 +4497,22 @@ } }, "browser-sync-client": { - "version": "2.27.9", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.9.tgz", - "integrity": "sha512-FHW8kydp7FXo6jnX3gXJCpHAHtWNLK0nx839nnK+boMfMI1n4KZd0+DmTxHBsHsF3OHud4V4jwoN8U5HExMIdQ==", + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", + "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", "dev": true, "requires": { "etag": "1.8.1", "fresh": "0.5.2", "mitt": "^1.1.3", - "rxjs": "^5.5.6" + "rxjs": "^5.5.6", + "typescript": "^4.6.2" } }, "browser-sync-ui": { - "version": "2.27.9", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.9.tgz", - "integrity": "sha512-rsduR2bRIwFvM8CX6iY/Nu5aWub0WB9zfSYg9Le/RV5N5DEyxJYey0VxdfWCnzDOoelassTDzYQo+r0iJno3qw==", + "version": "2.27.10", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", + "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", "dev": true, "requires": { "async-each-series": "0.1.1", @@ -3797,15 +4526,24 @@ "bs-recipes": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", "dev": true }, "bs-snippet-injector": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", "dev": true }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -3835,7 +4573,7 @@ "character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", "dev": true, "requires": { "is-regex": "^1.0.3" @@ -3857,6 +4595,11 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -3868,11 +4611,19 @@ "wrap-ansi": "^7.0.0" } }, + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -3880,8 +4631,16 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "commander": { "version": "5.1.0", @@ -3889,22 +4648,15 @@ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "condense-newlines": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -3915,7 +4667,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -3936,7 +4688,7 @@ "connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", "dev": true, "requires": { "debug": "2.6.9", @@ -3957,7 +4709,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -3994,15 +4746,38 @@ "vary": "^1" } }, + "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" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -4018,13 +4793,18 @@ "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", "dev": true }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, "dev-ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", "dev": true }, "dlv": { @@ -4036,7 +4816,7 @@ "doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", "dev": true }, "easy-extender": { @@ -4086,16 +4866,16 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" } }, "emoji-regex": { @@ -4107,13 +4887,21 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "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==", + "requires": { + "once": "^1.4.0" + } + }, "engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -4129,30 +4917,23 @@ } }, "engine.io-client": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", - "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", "dev": true, "requires": { - "@socket.io/component-emitter": "~3.0.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.0", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", + "engine.io-parser": "~5.0.3", "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0", - "yeast": "0.1.2" + "xmlhttprequest-ssl": "~2.0.0" } }, "engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", - "dev": true, - "requires": { - "@socket.io/base64-arraybuffer": "~1.0.2" - } + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true }, "entities": { "version": "2.1.0", @@ -4178,7 +4959,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { @@ -4196,19 +4977,23 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -4237,12 +5022,32 @@ } }, "filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "fill-range": { @@ -4257,7 +5062,7 @@ "finalhandler": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, "requires": { "debug": "2.6.9", @@ -4281,27 +5086,69 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "dev": true }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -4312,8 +5159,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -4335,28 +5181,52 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-parent": { @@ -4369,9 +5239,9 @@ } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "gray-matter": { @@ -4389,7 +5259,7 @@ "hamljs": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", - "integrity": "sha1-e3EWz22+cnjkKz9u+HJaM+F3yOM=", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", "dev": true }, "handlebars": { @@ -4417,7 +5287,7 @@ "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -4426,17 +5296,11 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true } } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4499,17 +5363,29 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "requires": { + "queue": "6.0.2" + } + }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -4518,14 +5394,17 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-binary-path": { "version": "2.1.0", @@ -4543,9 +5422,9 @@ "dev": true }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -4564,13 +5443,13 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -4622,43 +5501,49 @@ "is-whitespace": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", "dev": true }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "jake": { - "version": "10.8.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz", - "integrity": "sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "requires": { - "async": "0.9.x", + "async": "^3.2.3", "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" } }, "js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", "dev": true, "requires": { - "config-chain": "^1.1.12", + "config-chain": "^1.1.13", "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" + "glob": "^8.0.3", + "nopt": "^6.0.0" } }, "js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", "dev": true }, "js-yaml": { @@ -4674,7 +5559,7 @@ "jsonfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", "dev": true, "requires": { "graceful-fs": "^4.1.6" @@ -4683,7 +5568,7 @@ "jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", "dev": true, "requires": { "is-promise": "^2.0.0", @@ -4693,7 +5578,7 @@ "junk": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", - "integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI=", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", "dev": true }, "kind-of": { @@ -4703,9 +5588,9 @@ "dev": true }, "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, "limiter": { @@ -4724,9 +5609,9 @@ } }, "liquidjs": { - "version": "9.36.0", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.36.0.tgz", - "integrity": "sha512-HbU4xBsY1r3ZEORTgPsiluXsOtMx8iI0MqTsPejgIk+sIgta5wQUYsoQgUPuGKWVHKKKMO9PidiMEPKlePl8rg==", + "version": "9.42.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.42.0.tgz", + "integrity": "sha512-krvhwGFrMCMGhybGkxJIvlWVVnoCSpYCn7NhEN43+uvlg2vOkYWpq8be+L3NMlOfwe4ZrKQ7hCh1EmS4yhLKow==", "dev": true }, "localtunnel": { @@ -4782,13 +5667,13 @@ "lodash.deburr": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", "dev": true }, "lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", "dev": true }, "lru-cache": { @@ -4802,9 +5687,9 @@ } }, "luxon": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.3.1.tgz", - "integrity": "sha512-I8vnjOmhXsMSlNMZlMkSOvgrxKJl0uOsEzdGgGNZuZPaS9KlefpE9KV95QFftlJSC+1UyCC9/I69R02cz/zcCA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", "dev": true }, "markdown-it": { @@ -4831,7 +5716,7 @@ "maximatch": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", "dev": true, "requires": { "array-differ": "^1.0.0", @@ -4843,13 +5728,13 @@ "array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", "dev": true }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -4858,7 +5743,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true } } @@ -4866,7 +5751,7 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "merge2": { @@ -4876,13 +5761,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -4906,11 +5791,15 @@ "mime-db": "1.52.0" } }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4918,8 +5807,7 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mitt": { "version": "1.2.0", @@ -4928,14 +5816,19 @@ "dev": true }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "moo": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", @@ -4945,8 +5838,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multimatch": { "version": "5.0.0", @@ -4967,6 +5859,11 @@ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "dev": true }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -4979,13 +5876,34 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "nopt": { + "node-abi": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.24.0.tgz", + "integrity": "sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==", + "requires": { + "semver": "^7.3.5" + } + }, + "node-addon-api": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", + "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^1.0.0" } }, "normalize-path": { @@ -5008,13 +5926,13 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -5023,16 +5941,20 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, + "open-props": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/open-props/-/open-props-1.4.14.tgz", + "integrity": "sha512-EkTUczMzty8mIvnWGpC41ELIejARiuljsXTEz7YDRKJn5dJ1/njsLTpNhn2rsM3JSW95p4G94ojsgzxbaiFmNA==" + }, "openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", "dev": true }, "opn": { @@ -5044,17 +5966,27 @@ "is-wsl": "^1.1.0" } }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", - "dev": true + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", - "dev": true + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "requires": { + "p-finally": "^1.0.0" + } }, "parseurl": { "version": "1.3.3", @@ -5065,7 +5997,12 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "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 }, "path-parse": { @@ -5075,9 +6012,9 @@ "dev": true }, "path-to-regexp": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz", - "integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", "dev": true }, "picomatch": { @@ -5089,7 +6026,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "please-upgrade-node": { @@ -5102,27 +6039,49 @@ } }, "portscanner": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", - "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, "requires": { - "async": "1.5.2", + "async": "^2.6.0", "is-number-like": "^1.0.3" }, "dependencies": { "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } } } }, + "prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, "pretty": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", "dev": true, "requires": { "condense-newlines": "^0.2.1", @@ -5142,19 +6101,19 @@ "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, "pug": { @@ -5281,12 +6240,29 @@ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "qs": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", "dev": true }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "requires": { + "inherits": "~2.0.3" + } + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5311,6 +6287,27 @@ "unpipe": "1.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5340,22 +6337,22 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -5363,7 +6360,7 @@ "resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", "dev": true, "requires": { "debug": "^2.2.0", @@ -5382,7 +6379,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -5400,6 +6397,22 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "run-parallel": { @@ -5414,7 +6427,7 @@ "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", "dev": true }, "rxjs": { @@ -5426,6 +6439,11 @@ "symbol-observable": "1.0.1" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -5443,10 +6461,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" }, @@ -5455,7 +6472,6 @@ "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" } @@ -5463,15 +6479,14 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, "send": { @@ -5507,13 +6522,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -5525,13 +6540,13 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { @@ -5551,7 +6566,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -5575,13 +6590,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -5593,13 +6608,13 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { @@ -5611,7 +6626,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } @@ -5631,7 +6646,7 @@ "server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", "dev": true }, "setprototypeof": { @@ -5640,16 +6655,69 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "sharp": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz", + "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==", + "requires": { + "color": "^4.2.3", + "detect-libc": "^2.0.1", + "node-addon-api": "^5.0.0", + "prebuild-install": "^7.1.1", + "semver": "^7.3.7", + "simple-get": "^4.0.1", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + } + }, + "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 + }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", "dev": true }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", "dev": true }, "slugify": { @@ -5659,59 +6727,44 @@ "dev": true }, "socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", - "socket.io-parser": "~4.0.4" + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" } }, "socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", "dev": true }, "socket.io-client": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", - "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.2.tgz", + "integrity": "sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg==", "dev": true, "requires": { - "@socket.io/component-emitter": "~3.0.0", - "backo2": "~1.0.2", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.1.1", - "parseuri": "0.0.6", - "socket.io-parser": "~4.1.1" - }, - "dependencies": { - "socket.io-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz", - "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.0.0", - "debug": "~4.3.1" - } - } + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" } }, "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", "dev": true, "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, @@ -5724,19 +6777,19 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", "dev": true }, "stream-throttle": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, "requires": { "commander": "^2.2.0", @@ -5751,6 +6804,14 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5774,9 +6835,14 @@ "strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", "dev": true }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5795,9 +6861,32 @@ "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", "dev": true }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, "tfunk": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", @@ -5811,19 +6900,19 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -5836,13 +6925,13 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -5851,7 +6940,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true } } @@ -5859,7 +6948,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { @@ -5880,7 +6969,26 @@ "token-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", "dev": true }, "ua-parser-js": { @@ -5896,9 +7004,9 @@ "dev": true }, "uglify-js": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", - "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz", + "integrity": "sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==", "dev": true, "optional": true }, @@ -5911,27 +7019,55 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "dev": true }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "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" + } + }, "with": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", @@ -5947,7 +7083,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "wrap-ansi": { @@ -5964,8 +7100,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { "version": "8.2.3", @@ -5989,13 +7124,13 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, "yargs": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", - "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -6008,15 +7143,9 @@ } }, "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true } } diff --git a/package.json b/package.json index 9a695a8..0d75ab0 100644 --- a/package.json +++ b/package.json @@ -18,5 +18,11 @@ "license": "ISC", "devDependencies": { "@11ty/eleventy": "^1.0.0" + }, + "dependencies": { + "@11ty/eleventy-img": "^2.0.1", + "@fontsource/black-ops-one": "^4.5.7", + "@fontsource/source-sans-pro": "^4.5.10", + "open-props": "^1.3.9" } -} \ No newline at end of file +} diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/.gitignore b/projects/FrontendMentor/newbie/3-column-preview-card-component/.gitignore new file mode 100644 index 0000000..d13464a --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/.gitignore @@ -0,0 +1,16 @@ +# Avoid accidental upload of the Sketch and Figma design files +##################################################### +## Please do not remove lines 5 and 6 - thanks! 🙂 ## +##################################################### +*.sketch +*.fig + +# Avoid accidental XD upload if you convert the design file +############################################### +## Please do not remove line 12 - thanks! 🙂 ## +############################################### +*.xd + +# Avoid your project being littered with annoying .DS_Store files! +.DS_Store +.prettierignore \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/README-orig.md b/projects/FrontendMentor/newbie/3-column-preview-card-component/README-orig.md new file mode 100644 index 0000000..66459a9 --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/README-orig.md @@ -0,0 +1,92 @@ +# Frontend Mentor - 3-column preview card component + +![Design preview for the 3-column preview card component coding challenge](./design/desktop-preview.jpg) + +## Welcome! 👋 + +Thanks for checking out this front-end coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges help you improve your coding skills by building realistic projects. + +**To do this challenge, you need a basic understanding of HTML, CSS and JavaScript.** + +## The challenge + +Your challenge is to build out this 3-column preview card component and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout depending on their device's screen size +- See hover states for interactive elements + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the designs inside the `/design` folder. You will find both a mobile and a desktop version of the design. + +The designs are in JPG static format. Using JPGs will mean that you'll need to use your best judgment for styles such as `font-size`, `padding` and `margin`. + +If you would like the design files (we provide Sketch & Figma versions) to inspect the design in more detail, you can [subscribe as a PRO member](https://www.frontendmentor.io/pro). + +You will find all the required assets in the `/images` folder. The assets are already optimized. + +There is also a `style-guide.md` file containing the information you'll need, such as color palette and fonts. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Initialize your project as a public repository on [GitHub](https://github.com/). Creating a repo will make it easier to share your code with the community if you need help. If you're not sure how to do this, [have a read-through of this Try Git resource](https://try.github.io/). +2. Configure your repository to publish your code to a web address. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, and we provide some recommendations below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes to create reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. + +## Deploying your project + +As mentioned above, there are many ways to host your project for free. Our recommend hosts are: + +- [GitHub Pages](https://pages.github.com/) +- [Vercel](https://vercel.com/) +- [Netlify](https://www.netlify.com/) + +You can host your site using one of these solutions or any of our other trusted providers. [Read more about our recommended and trusted hosts](https://medium.com/frontend-mentor/frontend-mentor-trusted-hosting-providers-bf000dfebe). + +## Create a custom `README.md` + +We strongly recommend overwriting this `README.md` with a custom one. We've provided a template inside the [`README-template.md`](./README-template.md) file in this starter code. + +The template provides a guide for what to add. A custom `README` will help you explain your project and reflect on your learnings. Please feel free to edit our template as much as you like. + +Once you've added your information to the template, delete this file and rename the `README-template.md` file to `README.md`. That will make it show up as your repository's README file. + +## Submitting your solution + +Submit your solution on the platform for the rest of the community to see. Follow our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) for tips on how to do this. + +Remember, if you're looking for feedback on your solution, be sure to ask questions when submitting it. The more specific and detailed you are with your questions, the higher the chance you'll get valuable feedback from the community. + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +2. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor**, including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. +3. Share your solution on other social channels like LinkedIn. +4. Blog about your experience building your project. Writing about your workflow, technical choices, and talking through your code is a brilliant way to reinforce what you've learned. Great platforms to write on are [dev.to](https://dev.to/), [Hashnode](https://hashnode.com/), and [CodeNewbie](https://community.codenewbie.org/). + +We provide templates to help you share your solution once you've submitted it on the platform. Please do edit them and include specific questions when you're looking for feedback. + +The more specific you are with your questions the more likely it is that another member of the community will give you feedback. + +## Got feedback for us? + +We love receiving feedback! We're always looking to improve our challenges and our platform. So if you have anything you'd like to mention, please email hi[at]frontendmentor[dot]io. + +This challenge is completely free. Please share it with anyone who will find it useful for practice. + +**Have fun building!** 🚀 diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/README.md b/projects/FrontendMentor/newbie/3-column-preview-card-component/README.md new file mode 100644 index 0000000..6b696e7 --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/README.md @@ -0,0 +1,76 @@ +# Frontend Mentor - 3-column preview card component solution + +This is a solution to the [3-column preview card component challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/3column-preview-card-component-pH92eAR2-). Frontend Mentor challenges help you improve your coding skills by building realistic projects. + +## Table of contents + +- [Frontend Mentor - 3-column preview card component solution](#frontend-mentor---3-column-preview-card-component-solution) + - [Table of contents](#table-of-contents) + - [Overview](#overview) + - [The challenge](#the-challenge) + - [Screenshot](#screenshot) + - [Links](#links) + - [My process](#my-process) + - [Built with](#built-with) + - [What I learned](#what-i-learned) + - [Continued development](#continued-development) + - [Author](#author) + - [Acknowledgments](#acknowledgments) + +**Note: Delete this note and update the table of contents based on what sections you keep.** + +## Overview + +### The challenge + +Users should be able to: + +- View the optimal layout depending on their device's screen size +- See hover states for interactive elements + +### Screenshot + +Here are the final images for the desktop version + +![Desktop](./screenshots/desktop.png) + +and for the mobile version + +![Mobile](./screenshots/mobile.png) + +### Links + +- Solution URL: [Gitea on rmcg.dev](https://git.tarasis.net/tarasis/rmcg.dev/src/branch/main/projects/FrontendMentor/newbie/3-column-preview-card-component) +- Live Site URL: [rmcg.dev](https://rmcg.dev/FrontendMentor/newbie/3-column-preview-card-component) + +## My process + +### Built with + +- Semantic HTML5 markup +- CSS custom properties +- Flexbox +- Mobile-first workflow + +### What I learned + +I was rusty as I hadn't touched html/css/javascript in 7 months. Solution came together fairly quickly. + +As usual I focused on mobile first, and then added some minor tweaks for desktop. (Specifically the "Learn More" button is lower on the desktop version) + +I spent a little time chasing box widths, mainly it was paragraph width. Honestly I should have simply stayed with the `25ch` used for the mobile version rather than having `23.15ch` for the desktop. + +### Continued development + +Continue working through the `newbie` projects that I have, with an eye to trying to use `grid` rather than `flexbox`. + +## Author + +- Website - [Blog](https://tarasis.net) +- Website - [Portfolio](https://rmcg.dev) +- Frontend Mentor - [@tarasis](https://www.frontendmentor.io/profile/tarasis) +- Twitter - [@tarasis](https://www.twitter.com/tarasis) + +## Acknowledgments + +Just Matt front [Frontend Mentor](https://www.frontendmentor.io) for creating the site. These challenges have been an effective way of learning. \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/css/style.css b/projects/FrontendMentor/newbie/3-column-preview-card-component/css/style.css new file mode 100644 index 0000000..848bf05 --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/css/style.css @@ -0,0 +1,154 @@ +/* +Info: + desktop size 1440x800 + mobile size 375x1502 +*/ + +/* ! Create variables */ +:root { + /* Colors: Primary */ + --col-pri-bright-orange: hsl(31, 77%, 52%); + --col-pri-dark-cyan: hsl(184, 100%, 22%); + --col-pri-very-dark-cyan: hsl(179, 100%, 13%); + + /* Colors: Neutral */ + /* paragraphs */ + --col-neu-transparent-white: hsla(0, 0%, 100%, 0.75); + /* background, headings, buttons */ + --col-neu-very-light-gray: hsl(0, 0%, 95%); + + /* Fonts */ + --fs-body-15px: 0.9375rem; + --fw-400: 400; + --fw-700: 700; + + --ff-lexend: "Lexend Deca", sans-serif; + --ff-big-shoulders: "Big Shoulders Display", cursive; +} + +*, +::before, +::after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Provided attribution styling */ + +footer { + position: absolute; + bottom: 0; + width: 100%; + /* justify-content: space-around; */ +} + +.attribution { + font-size: 11px; + text-align: center; +} + +.attribution a { + color: hsl(228, 45%, 44%); +} + +html { +} + +body { + min-width: 100vw; + min-height: 100vh; + display: grid; + /* place-items: center; */ + justify-content: center; + align-content: center; + background-color: var(--col-neu-very-light-gray); +} + +.container { + display: flex; + flex-direction: column; +} +.card { + padding: 3rem; + + font-family: var(--ff-lexend); + font-size: var(--fs-body-15px); + color: var(--col-neu-very-light-gray); +} + +.card:first-child { + border-radius: 8px 8px 0 0; +} + +.card:last-child { + border-radius: 0 0 8px 8px; +} + +.card__image { + margin-bottom: 2.1875rem; +} +.card__title { + font-family: var(--ff-big-shoulders); + font-size: 2.5rem; + text-transform: uppercase; + margin-bottom: 1.5625rem; +} +.card__body { + margin-bottom: 1.5625rem; + width: 25ch; + color: var(--col-neu-transparent-white); + line-height: 1.5625rem; +} + +.card-learn-more__button { + background-color: var(--col-neu-very-light-gray); + border-radius: 25px; + padding: 12px 32px; + display: inline-block; + text-decoration: none; + color: var(--col-fg); +} + +.card-learn-more__button:focus, +.card-learn-more__button:hover { + background-color: var(--col-fg); + border: 2px solid var(--col-neu-very-light-gray); + padding: 10px 30px; + color: var(--col-neu-very-light-gray); +} + +.sedan-color { + background-color: var(--col-pri-bright-orange); + --col-fg: var(--col-pri-bright-orange); +} + +.suv-color { + background-color: var(--col-pri-dark-cyan); + --col-fg: var(--col-pri-dark-cyan); +} + +.luxury-color { + background-color: var(--col-pri-very-dark-cyan); + --col-fg: var(--col-pri-very-dark-cyan); +} + +@media screen and (min-width: 900px) { + .container { + flex-direction: row; + } + + .card:first-child { + border-radius: 8px 0 0 8px; + } + + .card:last-child { + border-radius: 0 8px 8px 0; + } + + .card__body { + /* just changed to chase design, honestly the 25ch width is fine */ + width: 23.15ch; + margin-bottom: 5.25rem; + } +} diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/design/active-states.jpg b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/active-states.jpg new file mode 100644 index 0000000..2edb663 Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/active-states.jpg differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/design/desktop-design.jpg b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/desktop-design.jpg new file mode 100644 index 0000000..f6ec462 Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/desktop-design.jpg differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/design/desktop-preview.jpg b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/desktop-preview.jpg new file mode 100644 index 0000000..a1df9da Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/desktop-preview.jpg differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/design/mobile-design.jpg b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/mobile-design.jpg new file mode 100644 index 0000000..d8204d7 Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/design/mobile-design.jpg differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/images/favicon-32x32.png b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/favicon-32x32.png new file mode 100644 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-luxury.svg b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-luxury.svg new file mode 100644 index 0000000..ff6bee2 --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-luxury.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-sedans.svg b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-sedans.svg new file mode 100644 index 0000000..a5cc5b6 --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-sedans.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-suvs.svg b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-suvs.svg new file mode 100644 index 0000000..5b107ab --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/images/icon-suvs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/index.html b/projects/FrontendMentor/newbie/3-column-preview-card-component/index.html new file mode 100644 index 0000000..0dfcae6 --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/index.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + Frontend Mentor | 3-column preview card component + + + + +
+
+ stylized image of a sedan car +

Sedans

+

+ Choose a sedan for its affordability and excellent fuel economy. Ideal for cruising in the city + or on your next road trip. +

+ Learn More +
+ +
+ stylized image of an SUV +

SUVs

+

+ Take an SUV for its spacious interior, power, and versatility. Perfect for your next family vacation + and off-road adventures. +

+ Learn More +
+ +
+ stylized image of a luxury car +

Luxury

+

+ Cruise in the best car brands without the bloated prices. Enjoy the enhanced comfort of a luxury + rental and arrive in style. +

+ Learn More +
+
+ + + + + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/screenshots/desktop.png b/projects/FrontendMentor/newbie/3-column-preview-card-component/screenshots/desktop.png new file mode 100644 index 0000000..a856f34 Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/screenshots/desktop.png differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/screenshots/mobile.png b/projects/FrontendMentor/newbie/3-column-preview-card-component/screenshots/mobile.png new file mode 100644 index 0000000..e64ad48 Binary files /dev/null and b/projects/FrontendMentor/newbie/3-column-preview-card-component/screenshots/mobile.png differ diff --git a/projects/FrontendMentor/newbie/3-column-preview-card-component/style-guide.md b/projects/FrontendMentor/newbie/3-column-preview-card-component/style-guide.md new file mode 100644 index 0000000..d0d755d --- /dev/null +++ b/projects/FrontendMentor/newbie/3-column-preview-card-component/style-guide.md @@ -0,0 +1,35 @@ +# Front-end Style Guide + +## Layout + +The designs were created to the following widths: + +- Mobile: 375px +- Desktop: 1440px + +## Colors + +### Primary + +Bright orange: hsl(31, 77%, 52%) +Dark cyan: hsl(184, 100%, 22%) +Very dark cyan: hsl(179, 100%, 13%) + +### Neutral + +Transparent white (paragraphs): hsla(0, 0%, 100%, 0.75) +Very light gray (background, headings, buttons): hsl(0, 0%, 95%) + +## Typography + +### Body Copy + +- Font size: 15px + +### Font + +- Family: [Lexend Deca](https://fonts.google.com/specimen/Lexend+Deca) +- Weights: 400 + +- Family: [Big Shoulders Display](https://fonts.google.com/specimen/Big+Shoulders+Display) +- Weights: 700 diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/.gitignore b/projects/FrontendMentor/newbie/base-apparel-coming-soon/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/README.md b/projects/FrontendMentor/newbie/base-apparel-coming-soon/README.md new file mode 100644 index 0000000..8ffac5d --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/README.md @@ -0,0 +1,83 @@ +# Frontend Mentor - Base Apparel coming soon page + +![Design preview for the Base Apparel coming soon page coding challenge](./design/desktop-preview.jpg) + +## Welcome! 👋 + +Thanks for checking out this front-end coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges allow you to improve your skills in a real-life workflow. + +**To do this challenge, you need a basic understanding of HTML, CSS and JavaScript.** + +## The challenge + +Your challenge is to build out this coming soon page and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout for the site depending on their device's screen size +- See hover states for all interactive elements on the page +- Receive an error message when the `form` is submitted if: + - The `input` field is empty + - The email address is not formatted correctly + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the designs inside the `/design` folder. You will find both a mobile and a desktop version of the design to work to. + +The designs are in JPG static format. This will mean that you'll need to use your best judgment for styles such as `font-size`, `padding` and `margin`. This should help train your eye to perceive differences in spacings and sizes. + +If you would like the Sketch file in order to inspect the design in more detail it is available to [purchase here](https://bmc.xyz/l/Pn38ZJp61). + +You will find all the required assets in the `/images` folder. The assets are already optimized. + +There is also a `style-guide.md` file, which contains the information you'll need, such as color palette and fonts. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Initialize your project as a public repository on [GitHub](https://github.com/). This will make it easier to share your code with the community if you need some help. If you're not sure how to do this, [have a read through of this Try Git resource](https://try.github.io/). +2. Configure your repository to publish your code to a URL. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, but we recommend using [Vercel](https://bit.ly/fem-vercel). We've got more information about deploying your project with Vercel below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes that you could create to make reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. +7. If you'd like to try making your project fully responsive, we'd recommend checking out [Sizzy](https://bit.ly/fm-sizzy). It's a great browser that makes it easy to view your site across multiple devices. + +## Deploying your project + +As mentioned above, there are a number of ways to host your project for free. We recommend using [Vercel](https://bit.ly/fem-vercel) as it's an amazing service and extremely simple to get set up with. If you'd like to use Vercel, here are some steps to follow to get started: + +1. [Sign up to Vercel](https://bit.ly/fem-vercel-signup) and go through the onboarding flow, ensuring your GitHub account is connected by using their [Vercel for GitHub](https://vercel.com/docs/v2/git-integrations/vercel-for-github) integration. +2. Connect your project to Vercel from the ["Import project" page](https://vercel.com/import), using the "From Git Repository" button and selecting the project you want to deploy. +3. Once connected, every time you `git push`, Vercel will create a new [deployment](https://vercel.com/docs/v2/platform/deployments) and the deployment URL will be shown on your [Dashboard](https://vercel.com/dashboard). You will also receive an email for each deployment with the URL. + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Submit it on the platform so that other users will see your solution on the site. Here's our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) to help you do that. +2. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +3. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor** including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. + +## Giving feedback + +Feedback is always welcome, so if you have any to give on this challenge please email hi[at]frontendmentor[dot]io. + +This challenge is completely free. Please share it with anyone who will find it useful for practice. + +**Have fun building!** 🚀 + +## Community Sponsors + +A massive thank you to our community sponsors! + +- [Sizzy](https://bit.ly/fm-sizzy) is an extremely useful browser designed specifically to improve a developer's workflow when building websites. You can fire up multiple device emulators and run them all in sync while building out your web pages. Perfect for helping build fully responsive websites! +- [Diversify Tech](https://bit.ly/fem-diversify-tech) is an amazing resource for underrepresented people in tech. The site features job listings for anyone seeking new opportunities. The resource section is also full of useful links to dive into! +- [Dracula PRO](https://bit.ly/fem-dracula) is a beautiful dark theme to help keep you focused and productive while you code. The theme isn't just for your editor either. You can also apply it to your most-used apps like your terminal and even Slack! diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/active-states.jpg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/active-states.jpg new file mode 100644 index 0000000..1295e46 Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/active-states.jpg differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/desktop-design.jpg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/desktop-design.jpg new file mode 100644 index 0000000..8b3e72f Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/desktop-design.jpg differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/desktop-preview.jpg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/desktop-preview.jpg new file mode 100644 index 0000000..977bd40 Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/desktop-preview.jpg differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/mobile-design.jpg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/mobile-design.jpg new file mode 100644 index 0000000..6c11d77 Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/design/mobile-design.jpg differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/bg-pattern-desktop.svg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/bg-pattern-desktop.svg new file mode 100644 index 0000000..68fa865 --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/bg-pattern-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/favicon-32x32.png b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/favicon-32x32.png new file mode 100644 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/hero-desktop.jpg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/hero-desktop.jpg new file mode 100644 index 0000000..62e846e Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/hero-desktop.jpg differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/hero-mobile.jpg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/hero-mobile.jpg new file mode 100644 index 0000000..9b25a6c Binary files /dev/null and b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/hero-mobile.jpg differ diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/icon-arrow.svg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/icon-arrow.svg new file mode 100644 index 0000000..fbd4431 --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/icon-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/icon-error.svg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/icon-error.svg new file mode 100644 index 0000000..8a990be --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/icon-error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/logo.svg b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/logo.svg new file mode 100644 index 0000000..86e24c6 --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/index.html b/projects/FrontendMentor/newbie/base-apparel-coming-soon/index.html new file mode 100644 index 0000000..826aafb --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Frontend Mentor | Base Apparel coming soon page + + + + + + + We're coming soon + + Hello fellow shoppers! We're currently building our new fashion store. + Add your email below to stay up-to-date with announcements and our launch deals. + + Email Address + + + + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/base-apparel-coming-soon/style-guide.md b/projects/FrontendMentor/newbie/base-apparel-coming-soon/style-guide.md new file mode 100644 index 0000000..61c225b --- /dev/null +++ b/projects/FrontendMentor/newbie/base-apparel-coming-soon/style-guide.md @@ -0,0 +1,35 @@ +# Front-end Style Guide + +## Layout + +The designs were created to the following widths: + +- Mobile: 375px +- Desktop: 1440px + +## Colors + +### Primary + +- Desaturated Red: hsl(0, 36%, 70%) +- Soft Red: hsl(0, 93%, 68%) + +### Neutral + +- Dark Grayish Red: hsl(0, 6%, 24%) + +### Gradients + +- Linear, 135deg, from hsl(0, 0%, 100%), to hsl(0, 100%, 98%) +- Linear, 135deg, from hsl(0, 80%, 86%), to hsl(0, 74%, 74%) + +## Typography + +### Body Copy + +- Font size: 16px + +### Font + +- Family: [Josefin Sans](https://fonts.google.com/specimen/Josefin+Sans) +- Weights: 300, 400, 600 diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/.gitignore b/projects/FrontendMentor/newbie/faq-accordion-card/.gitignore new file mode 100644 index 0000000..6233ce4 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/.gitignore @@ -0,0 +1,17 @@ +# Avoid accidental Sketch file upload +############################################### +## Please do not remove line 5 - thanks! 🙂 ## +############################################### +*.sketch + +# Avoid accidental XD or Figma upload if you convert the design file +####################################################### +## Please do not remove lines 11 and 12 - thanks! 🙂 ## +####################################################### +*.xd +*.fig + +# Avoid your project being littered with annoying .DS_Store files! +.DS_Store + +.prettierignore \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/README-template.md b/projects/FrontendMentor/newbie/faq-accordion-card/README-template.md new file mode 100644 index 0000000..18b0256 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/README-template.md @@ -0,0 +1,125 @@ +# DUMP of notes + +Was looking at using details/summary for a no javascript option but there is no support for animating the answer revail and there is not changing the position of where the disclosure triangle is https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details + + + + + + +# Frontend Mentor - Sunnyside agency landing page solution + +This is a solution to the [FAQ Accordion Card](https://www.frontendmentor.io/challenges/faq-accordion-card-XlyjD0Oam). Frontend Mentor challenges help you improve your coding skills by building realistic projects. + +## Table of contents + +- [DUMP of notes](#dump-of-notes) +- [Frontend Mentor - Sunnyside agency landing page solution](#frontend-mentor---sunnyside-agency-landing-page-solution) + - [Table of contents](#table-of-contents) + - [Overview](#overview) + - [The challenge](#the-challenge) + - [Screenshot](#screenshot) + - [Links](#links) + - [My process](#my-process) + - [Built with](#built-with) + - [What I learned](#what-i-learned) + - [Continued development](#continued-development) + - [Useful resources](#useful-resources) + - [Author](#author) + - [Acknowledgments](#acknowledgments) + +**Note: Delete this note and update the table of contents based on what sections you keep.** + +## Overview + +### The challenge + +Users should be able to: + +- View the optimal layout for the site depending on their device's screen size +- See hover states for all interactive elements on the page + +### Screenshot + +![](./screenshot.jpg) + +Add a screenshot of your solution. The easiest way to do this is to use Firefox to view your project, right-click the page and select "Take a Screenshot". You can choose either a full-height screenshot or a cropped one based on how long the page is. If it's very long, it might be best to crop it. + +Alternatively, you can use a tool like [FireShot](https://getfireshot.com/) to take the screenshot. FireShot has a free option, so you don't need to purchase it. + +Then crop/optimize/edit your image however you like, add it to your project, and update the file path in the image above. + +**Note: Delete this note and the paragraphs above when you add your screenshot. If you prefer not to add a screenshot, feel free to remove this entire section.** + +### Links + +- Solution URL: [Add solution URL here](https://your-solution-url.com) +- Live Site URL: [Add live site URL here](https://your-live-site-url.com) + +## My process + +### Built with + +- Semantic HTML5 markup +- CSS custom properties +- Flexbox +- CSS Grid +- Mobile-first workflow +- [React](https://reactjs.org/) - JS library +- [Next.js](https://nextjs.org/) - React framework +- [Styled Components](https://styled-components.com/) - For styles + +**Note: These are just examples. Delete this note and replace the list above with your own choices** + +### What I learned + +Use this section to recap over some of your major learnings while working through this project. Writing these out and providing code samples of areas you want to highlight is a great way to reinforce your own knowledge. + +To see how you can add code snippets, see below: + +```html +

Some HTML code I'm proud of

+``` + +```css +.proud-of-this-css { + color: papayawhip; +} +``` + +```js +const proudOfThisFunc = () => { + console.log("🎉"); +}; +``` + +If you want more help with writing markdown, we'd recommend checking out [The Markdown Guide](https://www.markdownguide.org/) to learn more. + +**Note: Delete this note and the content within this section and replace with your own learnings.** + +### Continued development + +Use this section to outline areas that you want to continue focusing on in future projects. These could be concepts you're still not completely comfortable with or techniques you found useful that you want to refine and perfect. + +**Note: Delete this note and the content within this section and replace with your own plans for continued development.** + +### Useful resources + +- [Example resource 1](https://www.example.com) - This helped me for XYZ reason. I really liked this pattern and will use it going forward. +- [Example resource 2](https://www.example.com) - This is an amazing article which helped me finally understand XYZ. I'd recommend it to anyone still learning this concept. + +**Note: Delete this note and replace the list above with resources that helped you during the challenge. These could come in handy for anyone viewing your solution or for yourself when you look back on this project in the future.** + +## Author + +- Website - [Add your name here](https://www.your-site.com) +- Frontend Mentor - [@yourusername](https://www.frontendmentor.io/profile/yourusername) +- Twitter - [@yourusername](https://www.twitter.com/yourusername) + +**Note: Delete this note and add/remove/edit lines above based on what links you'd like to share.** + +## Acknowledgments + +This is where you can give a hat tip to anyone who helped you out on this project. Perhaps you worked in a team or got some inspiration from someone else's solution. This is the perfect place to give them some credit. + +**Note: Delete this note and edit this section's content as necessary. If you completed this challenge by yourself, feel free to delete this section entirely.** diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/README.md b/projects/FrontendMentor/newbie/faq-accordion-card/README.md new file mode 100644 index 0000000..de20c53 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/README.md @@ -0,0 +1,80 @@ +# Frontend Mentor - FAQ Accordion Card + +![Design preview for the FAQ Accordion Card coding challenge](./design/desktop-preview.jpg) + +## Welcome! 👋 + +Thanks for checking out this front-end coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges allow you to improve your skills in a real-life workflow. + +**To do this challenge, you need a basic understanding of HTML, CSS and JavaScript.** + +## The challenge + +Your challenge is to build out this FAQ accordion card and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout for the component depending on their device's screen size +- See hover states for all interactive elements on the page +- Hide/Show the answer to a question when the question is clicked + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the designs inside the `/design` folder. You will find both a mobile and a desktop version of the design to work to. + +The designs are in JPG static format. This will mean that you'll need to use your best judgment for styles such as `font-size`, `padding` and `margin`. This should help train your eye to perceive differences in spacings and sizes. + +If you would like the Sketch file in order to inspect the design in more detail you can [subscribe as a PRO member](https://www.frontendmentor.io/pro). + +You will find all the required assets in the `/images` folder. The assets are already optimized. + +There is also a `style-guide.md` file, which contains the information you'll need, such as color palette and fonts. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Initialize your project as a public repository on [GitHub](https://github.com/). This will make it easier to share your code with the community if you need some help. If you're not sure how to do this, [have a read through of this Try Git resource](https://try.github.io/). +2. Configure your repository to publish your code to a URL. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, but we recommend using [Vercel](https://bit.ly/fem-vercel). We've got more information about deploying your project with Vercel below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes that you could create to make reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. + +## Deploying your project + +As mentioned above, there are a number of ways to host your project for free. We recommend using [Vercel](https://bit.ly/fem-vercel) as it's an amazing service and extremely simple to get set up with. If you'd like to use Vercel, here are some steps to follow to get started: + +1. [Sign up to Vercel](https://bit.ly/fem-vercel-signup) and go through the onboarding flow, ensuring your GitHub account is connected by using their [Vercel for GitHub](https://vercel.com/docs/v2/git-integrations/vercel-for-github) integration. +2. Connect your project to Vercel from the ["Import project" page](https://vercel.com/import), using the "From Git Repository" button and selecting the project you want to deploy. +3. Once connected, every time you `git push`, Vercel will create a new [deployment](https://vercel.com/docs/v2/platform/deployments) and the deployment URL will be shown on your [Dashboard](https://vercel.com/dashboard). You will also receive an email for each deployment with the URL. + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Submit it on the platform so that other users will see your solution on the site. Here's our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) to help you do that. +2. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +3. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor** including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. + +## Giving feedback + +Feedback is always welcome, so if you have any to give on this challenge please email hi[at]frontendmentor[dot]io. + +This challenge is completely free. Please share it with anyone who will find it useful for practice. + +**Have fun building!** 🚀 + +## Community Sponsors + +A massive thank you to our community sponsors! + +- [Hack for NF](https://bit.ly/fem-bemyapp) is a perfect opportunity to write code, contribute to an amazing cause, meet others, and have fun all at the same time! The hackathon starts October 2nd and runs through to November 13th. Datasets, mentor support, and input from patients are all provided. There's also \$40K USD in prizes and grants up for grabs! +- [Diversify Tech](https://bit.ly/fem-diversify-tech) is an amazing resource for underrepresented people in tech. The site features job listings for anyone seeking new opportunities. The resource section is also full of useful links to dive into! +- [Zero to Mastery](https://bit.ly/fem-ztm) is an incredible learning resource for all things web development. Led by Andrei Neagoie, the courses are really high-quality content and cover a wide range of in-demand skills. diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/css/reset.css b/projects/FrontendMentor/newbie/faq-accordion-card/css/reset.css new file mode 100644 index 0000000..af94440 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/css/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/css/style.css b/projects/FrontendMentor/newbie/faq-accordion-card/css/style.css new file mode 100644 index 0000000..e4ee5d8 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/css/style.css @@ -0,0 +1,176 @@ +/* +Info: + desktop size 1440x768 + mobile size 375x768 + +*/ + +@import url("https://fonts.googleapis.com/css2?family=Kumbh+Sans:wght@400;700&display=swap"); + +:root { + /* colors: */ + /* Text */ + --col-red-soft: hsl(14, 88%, 65%); + --col-blue-very-dark-desaturated: hsl(238, 29%, 16%); + --col-blue-very-dark-grayish: hsl(237, 12%, 33%); + --col-blue-dark-grayish: hsl(240, 6%, 50%); + + /* divider */ + --col-blue-light-grayish: hsl(240, 5%, 91%); + + /* background gradient */ + --col-violet-soft: hsl(273, 75%, 66%); + --col-blue-soft: hsl(240, 73%, 65%); + + --clr-test: rgb(255, 111, 000); + + /* Fonts */ + --fs-12px: 0.75rem; + --fw-400: 400; + --fw-700: 700; +} + +*, +::after, +::before { + box-sizing: border-box; +} + +html, +body, +main { + min-height: 100vh; + width: 100%; +} + +/* Base page styling */ + +body { + background: linear-gradient( + 180deg, + var(--col-violet-soft) 0%, + var(--col-blue-soft) 100% + ); +} + +main { + display: grid; + align-content: center; + justify-items: center; +} + +.card { + display: flex; + flex-direction: column; + font-family: "Kumbh Sans", sans-serif; + + background-color: white; + width: 87%; + border-radius: 23px; + background-image: var(--card-image); +} + +.card__header { + text-align: center; + font-weight: var(--fw-700); + font-size: 2rem; + line-height: 2.5rem; +} + +.card__header_image { + position: absolute; + background-size: contain; + content: url(../images/illustration-woman-online-mobile.svg); + /* margin: 0 auto; */ + width: 237px; + height: 180px; + left: calc(50% - calc(237px / 2) - 10px); + top: -20px; + /* : calc(100% - 237px/2); */ + /* left: 40px; */ +} + +.card__header_image_shadow { + background-image: url(../images/bg-pattern-mobile.svg); + background-repeat: no-repeat; + background-position: top center; + border: 1px solid red; +} + +@media screen and (min-width: 376px) { + .card { + flex-direction: row; + } + .card__header { + text-align: start; + } +} + +.faq { + margin-top: 6.125rem; + /* border: 1px red solid; */ + color: var(--col-red-soft); +} + +/* FAQ Section */ + +details { + font-size: var(--fs-12px); + line-height: 1.125rem; + padding: 1rem 0 1rem 1.5rem; + color: var(--col-blue-dark-grayish); + + border-bottom: 1px solid var(--col-blue-light-grayish); + border-width: 75%; +} + +summary { + font-size: 0.8125rem; + font-weight: var(--fw-400); + line-height: 1rem; + + color: var(--col-blue-very-dark-grayish); + /* padding: 1rem 1.5rem; */ + margin-bottom: 1rem; + outline: none; + /* border-radius: 0.25rem; */ + text-align: left; + cursor: pointer; + position: relative; + display: block; +} + +summary:hover { + color: var(--col-red-soft); +} + +details > summary::after { + position: absolute; + content: url(../images/icon-arrow-down.svg); + right: 20px; +} +details[open] > summary { + font-weight: var(--fw-700); + color: var(--col-blue-very-dark-desaturated); +} +details[open] > summary::after { + transform: rotate(180deg); +} + +details > summary::-webkit-details-marker { + display: none; +} + +details[open] summary ~ * { + animation: sweep 0.5s ease-in-out; +} +@keyframes sweep { + 0% { + opacity: 0; + margin-top: -10px; + } + 100% { + opacity: 1; + margin-top: 0px; + } +} diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/design/active-states.jpg b/projects/FrontendMentor/newbie/faq-accordion-card/design/active-states.jpg new file mode 100644 index 0000000..9cec5ce Binary files /dev/null and b/projects/FrontendMentor/newbie/faq-accordion-card/design/active-states.jpg differ diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/design/desktop-design.jpg b/projects/FrontendMentor/newbie/faq-accordion-card/design/desktop-design.jpg new file mode 100644 index 0000000..995eedb Binary files /dev/null and b/projects/FrontendMentor/newbie/faq-accordion-card/design/desktop-design.jpg differ diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/design/desktop-preview.jpg b/projects/FrontendMentor/newbie/faq-accordion-card/design/desktop-preview.jpg new file mode 100644 index 0000000..60b5f17 Binary files /dev/null and b/projects/FrontendMentor/newbie/faq-accordion-card/design/desktop-preview.jpg differ diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/design/mobile-design.jpg b/projects/FrontendMentor/newbie/faq-accordion-card/design/mobile-design.jpg new file mode 100644 index 0000000..0439d55 Binary files /dev/null and b/projects/FrontendMentor/newbie/faq-accordion-card/design/mobile-design.jpg differ diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/bg-pattern-desktop.svg b/projects/FrontendMentor/newbie/faq-accordion-card/images/bg-pattern-desktop.svg new file mode 100644 index 0000000..0e7083c --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/images/bg-pattern-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/bg-pattern-mobile.svg b/projects/FrontendMentor/newbie/faq-accordion-card/images/bg-pattern-mobile.svg new file mode 100644 index 0000000..63e033b --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/images/bg-pattern-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/favicon-32x32.png b/projects/FrontendMentor/newbie/faq-accordion-card/images/favicon-32x32.png new file mode 100644 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/faq-accordion-card/images/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/icon-arrow-down.svg b/projects/FrontendMentor/newbie/faq-accordion-card/images/icon-arrow-down.svg new file mode 100644 index 0000000..3dcb6ec --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/images/icon-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-box-desktop.svg b/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-box-desktop.svg new file mode 100644 index 0000000..16791c5 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-box-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-woman-online-desktop.svg b/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-woman-online-desktop.svg new file mode 100644 index 0000000..6bca509 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-woman-online-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-woman-online-mobile.svg b/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-woman-online-mobile.svg new file mode 100644 index 0000000..6ad3bb7 --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/images/illustration-woman-online-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/index.html b/projects/FrontendMentor/newbie/faq-accordion-card/index.html new file mode 100644 index 0000000..f3d8dcd --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/index.html @@ -0,0 +1,81 @@ + + + + + + + + + + + Frontend Mentor | FAQ Accordion Card + + + + + + + +
+
+ +
+
+
+
+ +
+
+

FAQ

+
+ How many team members can I invite? +
+ You can invite up to 2 additional users on the Free plan. There is no limit on + team members for the Premium plan. +
+
+
+ What is the maximum file upload size? +
+ No more than 2GB. All files in your account must fit your allotted storage space.
+
+
+ How do I reset my password? +
+ Click “Forgot password” from the login page or “Change password” from your profile page. + A reset link will be emailed to you. +
+
+
+ Can I cancel my subscription? +
+ Yes! Send us a message and we’ll process your request no questions asked. +
+
+
+ Do you provide additional support? +
+ Chat and email support is available 24/7. Phone lines are open during normal business hours. +
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/faq-accordion-card/style-guide.md b/projects/FrontendMentor/newbie/faq-accordion-card/style-guide.md new file mode 100644 index 0000000..a1267ac --- /dev/null +++ b/projects/FrontendMentor/newbie/faq-accordion-card/style-guide.md @@ -0,0 +1,46 @@ +# Front-end Style Guide + +## Layout + +The designs were created to the following widths: + +- Mobile: 375px +- Desktop: 1440px + +## Colors + +### Primary + +#### Text + +- Very dark desaturated blue: hsl(238, 29%, 16%) +- Soft red: hsl(14, 88%, 65%) + +#### Gradient + +Background gradient: + +- Soft violet: hsl(273, 75%, 66%) +- Soft blue: hsl(240, 73%, 65%) + +### Neutral + +#### Text + +- Very dark grayish blue: hsl(237, 12%, 33%) +- Dark grayish blue: hsl(240, 6%, 50%) + +#### Dividers + +- Light grayish blue: hsl(240, 5%, 91%) + +## Typography + +### Body Copy + +- Font size: 12px + +### Font + +- Family: [Kumbh Sans](https://fonts.google.com/specimen/Kumbh+Sans) +- Weights: 400, 700 diff --git a/projects/FrontendMentor/newbie/four-card-feature-section/css/style.css b/projects/FrontendMentor/newbie/four-card-feature-section/css/style.css index 8e4fbf6..1bc7d10 100644 --- a/projects/FrontendMentor/newbie/four-card-feature-section/css/style.css +++ b/projects/FrontendMentor/newbie/four-card-feature-section/css/style.css @@ -1,8 +1,8 @@ -@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;400;600&display=swap'); +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200;400;600&display=swap"); -/* +/* * Challenge colors, font - * + * * The font-size for 20px is to make rem clearer for increments * * Mobile: 375px (375x1360) @@ -10,7 +10,7 @@ */ :root { - font-family: 'Poppins', sans-serif; + font-family: "Poppins", sans-serif; font-size: 20px; /* Primary Colors */ @@ -77,7 +77,6 @@ body { font-size: 16px; } - .middleSection { margin-top: 2.5rem; } @@ -105,7 +104,6 @@ body { margin-top: 1.8rem; margin-left: auto; width: 22%; - } .column1 { @@ -137,7 +135,6 @@ body { } */ @media screen and (min-width: 1000px) { - .flexContainer { max-width: 1440px; } @@ -152,7 +149,7 @@ body { margin-right: auto; font-size: 15px; } - + .flexContainer { width: 78%; } @@ -172,12 +169,12 @@ body { .card-image { margin-top: 2rem; } - + .column { display: flex; flex-direction: column; margin: auto; - max-width: calc((100% /3) - 1.5rem); + max-width: calc((100% / 3) - 1.5rem); } .karma { diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/.gitignore b/projects/FrontendMentor/newbie/intro-component-with-signup-form/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/projects/FrontendMentor/newbie/intro-component-with-signup-form/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/README.md b/projects/FrontendMentor/newbie/intro-component-with-signup-form/README.md new file mode 100644 index 0000000..7c79f2b --- /dev/null +++ b/projects/FrontendMentor/newbie/intro-component-with-signup-form/README.md @@ -0,0 +1,83 @@ +# Frontend Mentor - Intro component with sign up form + +![Design preview for the Intro component with sign up form coding challenge](./design/desktop-preview.jpg) + +## Welcome! 👋 + +Thanks for checking out this front-end coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges allow you to improve your skills in a real-life workflow. + +**To do this challenge, you need a basic understanding of HTML, CSS and JavaScript.** + +## The challenge + +Your challenge is to build out this introductory component and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout for the site depending on their device's screen size +- See hover states for all interactive elements on the page +- Receive an error message when the `form` is submitted if: + - Any `input` field is empty. The message for this error should say *"[Field Name] cannot be empty"* + - The email address is not formatted correctly (i.e. a correct email address should have this structure: `name@host.tld`). The message for this error should say *"Looks like this is not an email"* + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the designs inside the `/design` folder. You will find both a mobile and a desktop version of the design to work to. + +The designs are in JPG static format. This will mean that you'll need to use your best judgment for styles such as `font-size`, `padding` and `margin`. This should help train your eye to perceive differences in spacings and sizes. + +If you would like the Sketch file in order to inspect the design in more detail it is available to [purchase here](). + +You will find all the required assets in the `/images` folder. The assets are already optimized. + +There is also a `style-guide.md` file, which contains the information you'll need, such as color palette and fonts. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Initialize your project as a public repository on [GitHub](https://github.com/). This will make it easier to share your code with the community if you need some help. If you're not sure how to do this, [have a read through of this Try Git resource](https://try.github.io/). +2. Configure your repository to publish your code to a URL. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, but we recommend using [Vercel](https://bit.ly/fem-vercel). We've got more information about deploying your project with Vercel below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes that you could create to make reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. +7. If you'd like to try making your project fully responsive, we'd recommend checking out [Sizzy](https://bit.ly/fm-sizzy). It's a great browser that makes it easy to view your site across multiple devices. + +## Deploying your project + +As mentioned above, there are a number of ways to host your project for free. We recommend using [Vercel](https://bit.ly/fem-vercel) as it's an amazing service and extremely simple to get set up with. If you'd like to use Vercel, here are some steps to follow to get started: + +1. [Sign up to Vercel](https://bit.ly/fem-vercel-signup) and go through the onboarding flow, ensuring your GitHub account is connected by using their [Vercel for GitHub](https://vercel.com/docs/v2/git-integrations/vercel-for-github) integration. +2. Connect your project to Vercel from the ["Import project" page](https://vercel.com/import), using the "From Git Repository" button and selecting the project you want to deploy. +3. Once connected, every time you `git push`, Vercel will create a new [deployment](https://vercel.com/docs/v2/platform/deployments) and the deployment URL will be shown on your [Dashboard](https://vercel.com/dashboard). You will also receive an email for each deployment with the URL. + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Submit it on the platform so that other users will see your solution on the site. Here's our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) to help you do that. +2. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +3. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor** including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. + +## Giving feedback + +Feedback is always welcome, so if you have any to give on this challenge please email hi[at]frontendmentor[dot]io. + +This challenge is completely free. Please share it with anyone who will find it useful for practice. + +**Have fun building!** 🚀 + +## Community Sponsors + +A massive thank you to our community sponsors! + +- [Sizzy](https://bit.ly/fm-sizzy) is an extremely useful browser designed specifically to improve a developer's workflow when building websites. You can fire up multiple device emulators and run them all in sync while building out your web pages. Perfect for helping build fully responsive websites! +- [Diversify Tech](https://bit.ly/fem-diversify-tech) is an amazing resource for underrepresented people in tech. The site features job listings for anyone seeking new opportunities. The resource section is also full of useful links to dive into! +- [Dracula PRO](https://bit.ly/fem-dracula) is a beautiful dark theme to help keep you focused and productive while you code. The theme isn't just for your editor either. You can also apply it to your most-used apps like your terminal and even Slack! diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/active-states.jpg b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/active-states.jpg new file mode 100644 index 0000000..5aefaf0 Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/active-states.jpg differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/desktop-design.jpg b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/desktop-design.jpg new file mode 100644 index 0000000..1ef2ca6 Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/desktop-design.jpg differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/desktop-preview.jpg b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/desktop-preview.jpg new file mode 100644 index 0000000..5cae297 Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/desktop-preview.jpg differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/mobile-design.jpg b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/mobile-design.jpg new file mode 100644 index 0000000..dd765fa Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/design/mobile-design.jpg differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/bg-intro-desktop.png b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/bg-intro-desktop.png new file mode 100644 index 0000000..641d669 Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/bg-intro-desktop.png differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/bg-intro-mobile.png b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/bg-intro-mobile.png new file mode 100644 index 0000000..fcfece7 Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/bg-intro-mobile.png differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/favicon-32x32.png b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/favicon-32x32.png new file mode 100644 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/icon-error.svg b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/icon-error.svg new file mode 100644 index 0000000..f2024b8 --- /dev/null +++ b/projects/FrontendMentor/newbie/intro-component-with-signup-form/images/icon-error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/index.html b/projects/FrontendMentor/newbie/intro-component-with-signup-form/index.html new file mode 100644 index 0000000..732b11b --- /dev/null +++ b/projects/FrontendMentor/newbie/intro-component-with-signup-form/index.html @@ -0,0 +1,42 @@ + + + + + + + + + Frontend Mentor | Intro component with sign up form + + + + + + + Learn to code by watching others + + See how experienced developers solve problems in real-time. Watching scripted tutorials is great, + but understanding how developers think is invaluable. + + Try it free 7 days then $20/mo. thereafter + + First Name + Last Name + Email Address + Password + + Claim your free trial + + By clicking the button, you are agreeing to our Terms and Services + + + + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/intro-component-with-signup-form/style-guide.md b/projects/FrontendMentor/newbie/intro-component-with-signup-form/style-guide.md new file mode 100644 index 0000000..71bb67b --- /dev/null +++ b/projects/FrontendMentor/newbie/intro-component-with-signup-form/style-guide.md @@ -0,0 +1,35 @@ +# Front-end Style Guide + +## Layout + +The designs were created to the following widths: + +- Mobile: 375px +- Desktop: 1440px + +## Colors + +### Primary + +- Red: hsl(0, 100%, 74%) +- Green: hsl(154, 59%, 51%) + +### Accent + +- Blue: hsl(248, 32%, 49%) + +### Neutral + +- Dark Blue: hsl(249, 10%, 26%) +- Grayish Blue: hsl(246, 25%, 77%) + +## Typography + +### Body Copy + +- Font size: 16px + +### Font + +- Family: [Poppins](https://fonts.google.com/specimen/Poppins) +- Weights: 400, 500, 600, 700 diff --git a/projects/FrontendMentor/newbie/meet-landing-page/.gitignore b/projects/FrontendMentor/newbie/meet-landing-page/.gitignore new file mode 100755 index 0000000..d13464a --- /dev/null +++ b/projects/FrontendMentor/newbie/meet-landing-page/.gitignore @@ -0,0 +1,16 @@ +# Avoid accidental upload of the Sketch and Figma design files +##################################################### +## Please do not remove lines 5 and 6 - thanks! 🙂 ## +##################################################### +*.sketch +*.fig + +# Avoid accidental XD upload if you convert the design file +############################################### +## Please do not remove line 12 - thanks! 🙂 ## +############################################### +*.xd + +# Avoid your project being littered with annoying .DS_Store files! +.DS_Store +.prettierignore \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/meet-landing-page/README-template.md b/projects/FrontendMentor/newbie/meet-landing-page/README-template.md new file mode 100755 index 0000000..f6db74b --- /dev/null +++ b/projects/FrontendMentor/newbie/meet-landing-page/README-template.md @@ -0,0 +1,111 @@ +# Frontend Mentor - Meet landing page solution + +This is a solution to the [Meet landing page challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/meet-landing-page-rbTDS6OUR). Frontend Mentor challenges help you improve your coding skills by building realistic projects. + +## Table of contents + +- [Overview](#overview) + - [The challenge](#the-challenge) + - [Screenshot](#screenshot) + - [Links](#links) +- [My process](#my-process) + - [Built with](#built-with) + - [What I learned](#what-i-learned) + - [Continued development](#continued-development) + - [Useful resources](#useful-resources) +- [Author](#author) +- [Acknowledgments](#acknowledgments) + +**Note: Delete this note and update the table of contents based on what sections you keep.** + +## Overview + +### The challenge + +Users should be able to: + +- View the optimal layout depending on their device's screen size +- See hover states for interactive elements + +### Screenshot + +![](./screenshot.jpg) + +Add a screenshot of your solution. The easiest way to do this is to use Firefox to view your project, right-click the page and select "Take a Screenshot". You can choose either a full-height screenshot or a cropped one based on how long the page is. If it's very long, it might be best to crop it. + +Alternatively, you can use a tool like [FireShot](https://getfireshot.com/) to take the screenshot. FireShot has a free option, so you don't need to purchase it. + +Then crop/optimize/edit your image however you like, add it to your project, and update the file path in the image above. + +**Note: Delete this note and the paragraphs above when you add your screenshot. If you prefer not to add a screenshot, feel free to remove this entire section.** + +### Links + +- Solution URL: [Add solution URL here](https://your-solution-url.com) +- Live Site URL: [Add live site URL here](https://your-live-site-url.com) + +## My process + +### Built with + +- Semantic HTML5 markup +- CSS custom properties +- Flexbox +- CSS Grid +- Mobile-first workflow +- [React](https://reactjs.org/) - JS library +- [Next.js](https://nextjs.org/) - React framework +- [Styled Components](https://styled-components.com/) - For styles + +**Note: These are just examples. Delete this note and replace the list above with your own choices** + +### What I learned + +Use this section to recap over some of your major learnings while working through this project. Writing these out and providing code samples of areas you want to highlight is a great way to reinforce your own knowledge. + +To see how you can add code snippets, see below: + +```html +

Some HTML code I'm proud of

+``` +```css +.proud-of-this-css { + color: papayawhip; +} +``` +```js +const proudOfThisFunc = () => { + console.log('🎉') +} +``` + +If you want more help with writing markdown, we'd recommend checking out [The Markdown Guide](https://www.markdownguide.org/) to learn more. + +**Note: Delete this note and the content within this section and replace with your own learnings.** + +### Continued development + +Use this section to outline areas that you want to continue focusing on in future projects. These could be concepts you're still not completely comfortable with or techniques you found useful that you want to refine and perfect. + +**Note: Delete this note and the content within this section and replace with your own plans for continued development.** + +### Useful resources + +- [Example resource 1](https://www.example.com) - This helped me for XYZ reason. I really liked this pattern and will use it going forward. +- [Example resource 2](https://www.example.com) - This is an amazing article which helped me finally understand XYZ. I'd recommend it to anyone still learning this concept. + +**Note: Delete this note and replace the list above with resources that helped you during the challenge. These could come in handy for anyone viewing your solution or for yourself when you look back on this project in the future.** + +## Author + +- Website - [Add your name here](https://www.your-site.com) +- Frontend Mentor - [@yourusername](https://www.frontendmentor.io/profile/yourusername) +- Twitter - [@yourusername](https://www.twitter.com/yourusername) + +**Note: Delete this note and add/remove/edit lines above based on what links you'd like to share.** + +## Acknowledgments + +This is where you can give a hat tip to anyone who helped you out on this project. Perhaps you worked in a team or got some inspiration from someone else's solution. This is the perfect place to give them some credit. + +**Note: Delete this note and edit this section's content as necessary. If you completed this challenge by yourself, feel free to delete this section entirely.** diff --git a/projects/FrontendMentor/newbie/meet-landing-page/README.md b/projects/FrontendMentor/newbie/meet-landing-page/README.md new file mode 100755 index 0000000..89fb5cd --- /dev/null +++ b/projects/FrontendMentor/newbie/meet-landing-page/README.md @@ -0,0 +1,88 @@ +# Frontend Mentor - Meet landing page + +![Design preview for the Meet landing page coding challenge](./preview.jpg) + +## Welcome! 👋 + +Thanks for purchasing this premium Frontend Mentor coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges help you improve your coding skills by building realistic projects. These premium challenges are perfect portfolio pieces, so please feel free to use what you create in your portfolio to show others. + +**To do this challenge, you need a decent understanding of HTML & CSS.** + +## The challenge + +Your challenge is to build out this landing page and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout depending on their device's screen size +- See hover states for interactive elements + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the design file provided. We provide both Sketch and Figma versions of the design, so you can choose which tool you prefer to use. You can download the design file on the platform. **Please be sure not to share them with anyone else.** The design download comes with a `README.md` file as well to help you get set up. + +All the required assets for this project are in the `/assets` folder. The assets are already exported for the correct screen size and optimized. Some images are reusable at multiple screen sizes. So if you don't see an image in a specific folder, it will typically be in another folder for that page. + +The design system in the design file will give you more information about the various colors, fonts, and styles used in this project. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Separate the `starter-code` from the rest of this project and rename it to something meaningful for you. Initialize the codebase as a public repository on [GitHub](https://github.com/). Creating a repo will make it easier to share your code with the community if you need help. If you're not sure how to do this, [have a read-through of this Try Git resource](https://try.github.io/). **⚠️ IMPORTANT ⚠️: There are already a couple of `.gitignore` files in this project. Please do not remove them or change the content of the files. If you create a brand new project, please use the `.gitignore` files provided in your new codebase. This is to avoid the accidental upload of the design files to GitHub. With these premium challenges, please be sure not to share the design files in your GitHub repo. Thanks!** +2. Configure your repository to publish your code to a web address. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, and we provide some recommendations below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes to create reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. + +## Deploying your project + +As mentioned above, there are many ways to host your project for free. Our recommend hosts are: + +- [GitHub Pages](https://pages.github.com/) +- [Vercel](https://vercel.com/) +- [Netlify](https://www.netlify.com/) + +You can host your site using one of these solutions or any of our other trusted providers. [Read more about our recommended and trusted hosts](https://medium.com/frontend-mentor/frontend-mentor-trusted-hosting-providers-bf000dfebe). + +## Create a custom `README.md` + +We strongly recommend overwriting this `README.md` with a custom one. We've provided a template inside the [`README-template.md`](./README-template.md) file in this starter code. + +The template provides a guide for what to add. A custom `README` will help you explain your project and reflect on your learnings. Please feel free to edit our template as much as you like. + +Once you've added your information to the template, delete this file and rename the `README-template.md` file to `README.md`. That will make it show up as your repository's README file. + +## Submitting your solution + +Submit your solution on the platform for the rest of the community to see. Follow our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) for tips on how to do this. + +Remember, if you're looking for feedback on your solution, be sure to ask questions when submitting it. The more specific and detailed you are with your questions, the higher the chance you'll get valuable feedback from the community. + +**⚠️ IMPORTANT ⚠️: With these premium challenges, please be sure not to upload the design files to GitHub when you're submitting to the platform and sharing it around. If you've created a brand new project, the easiest way to do that is to copy across the `.gitignore` provided in this starter project.** + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +2. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor**, including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. +3. Share your solution on other social channels like LinkedIn. +4. Blog about your experience building your project. Writing about your workflow, technical choices, and talking through your code is a brilliant way to reinforce what you've learned. Great platforms to write on are [dev.to](https://dev.to/), [Hashnode](https://hashnode.com/), and [CodeNewbie](https://community.codenewbie.org/). + +We provide templates to help you share your solution once you've submitted it on the platform. Please do edit them and include specific questions when you're looking for feedback. + +The more specific you are with your questions the more likely it is that another member of the community will give you feedback. + +## Got feedback for us? + +We love receiving feedback! We're always looking to improve our challenges and our platform. So if you have anything you'd like to mention, please email hi[at]frontendmentor[dot]io. + +**Have fun building!** 🚀 diff --git a/projects/FrontendMentor/newbie/meet-landing-page/preview.jpg b/projects/FrontendMentor/newbie/meet-landing-page/preview.jpg new file mode 100755 index 0000000..79d2226 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/preview.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/.gitignore b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/.gitignore new file mode 100755 index 0000000..d13464a --- /dev/null +++ b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/.gitignore @@ -0,0 +1,16 @@ +# Avoid accidental upload of the Sketch and Figma design files +##################################################### +## Please do not remove lines 5 and 6 - thanks! 🙂 ## +##################################################### +*.sketch +*.fig + +# Avoid accidental XD upload if you convert the design file +############################################### +## Please do not remove line 12 - thanks! 🙂 ## +############################################### +*.xd + +# Avoid your project being littered with annoying .DS_Store files! +.DS_Store +.prettierignore \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-footer.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-footer.jpg new file mode 100755 index 0000000..3981938 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-footer.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-hero-left.png b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-hero-left.png new file mode 100755 index 0000000..2a7ec99 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-hero-left.png differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-hero-right.png b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-hero-right.png new file mode 100755 index 0000000..8c169f4 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-hero-right.png differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-man-texting.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-man-texting.jpg new file mode 100755 index 0000000..a7b82bb Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-man-texting.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-men-in-meeting.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-men-in-meeting.jpg new file mode 100755 index 0000000..9ae0f6e Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-men-in-meeting.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-woman-in-videocall.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-woman-in-videocall.jpg new file mode 100755 index 0000000..103f830 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-woman-in-videocall.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-women-videochatting.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-women-videochatting.jpg new file mode 100755 index 0000000..f3f7359 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/desktop/image-women-videochatting.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/favicon-32x32.png b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/favicon-32x32.png new file mode 100755 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/logo.svg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/logo.svg new file mode 100755 index 0000000..8df1378 --- /dev/null +++ b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/mobile/image-footer.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/mobile/image-footer.jpg new file mode 100755 index 0000000..52fe47c Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/mobile/image-footer.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/tablet/image-footer.jpg b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/tablet/image-footer.jpg new file mode 100755 index 0000000..889bbed Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/tablet/image-footer.jpg differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/tablet/image-hero.png b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/tablet/image-hero.png new file mode 100755 index 0000000..9834208 Binary files /dev/null and b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/assets/tablet/image-hero.png differ diff --git a/projects/FrontendMentor/newbie/meet-landing-page/starter-code/index.html b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/index.html new file mode 100755 index 0000000..392c404 --- /dev/null +++ b/projects/FrontendMentor/newbie/meet-landing-page/starter-code/index.html @@ -0,0 +1,31 @@ + + + + + + + + + Frontend Mentor | Meet landing page + + + Meet makes it easy to connect with others face-to-face virtually and collaborate across any device. + + Download v1.3 + What is it? + + 01 + Built for modern use + + Smarter meetings, all in one place + + Send messages, share files, show your screen, and record your meetings — all in one + workspace. Control who can join with invite-only team access, data encryption, and data export. + + 02 + Experience more together + Stay connected with reliable HD meetings and unlimited one-on-one and group video sessions. + + Download v1.3 + + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/.gitignore b/projects/FrontendMentor/newbie/pod-request-access-landing-page/.gitignore new file mode 100755 index 0000000..d13464a --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/.gitignore @@ -0,0 +1,16 @@ +# Avoid accidental upload of the Sketch and Figma design files +##################################################### +## Please do not remove lines 5 and 6 - thanks! 🙂 ## +##################################################### +*.sketch +*.fig + +# Avoid accidental XD upload if you convert the design file +############################################### +## Please do not remove line 12 - thanks! 🙂 ## +############################################### +*.xd + +# Avoid your project being littered with annoying .DS_Store files! +.DS_Store +.prettierignore \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/README-orig.md b/projects/FrontendMentor/newbie/pod-request-access-landing-page/README-orig.md new file mode 100755 index 0000000..dddcaeb --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/README-orig.md @@ -0,0 +1,91 @@ +# Frontend Mentor - Pod request access landing page + +![Design preview for the Pod request access landing page coding challenge](./preview.jpg) + +## Welcome! 👋 + +Thanks for purchasing this premium Frontend Mentor coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges help you improve your coding skills by building realistic projects. These premium challenges are perfect portfolio pieces, so please feel free to use what you create in your portfolio to show others. + +**To do this challenge, you need a basic understanding of HTML, CSS, and JavaScript.** + +## The challenge + +Your challenge is to build out this early access landing page and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout depending on their device's screen size +- See hover states for interactive elements +- Receive an error message when the form is submitted if: + - The `Email address` field is empty should show "Oops! Please add your email" + - The email is not formatted correctly should show "Oops! Please check your email" + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the design file provided. We provide both Sketch and Figma versions of the design, so you can choose which tool you prefer to use. You can download the design file on the platform. **Please be sure not to share them with anyone else.** The design download comes with a `README.md` file as well to help you get set up. + +All the required assets for this project are in the `/assets` folder. The assets are already exported for the correct screen size and optimized. Some images are reusable at multiple screen sizes. So if you don't see an image in a specific folder, it will typically be in another folder for that page. + +The design system in the design file will give you more information about the various colors, fonts, and styles used in this project. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Separate the `starter-code` from the rest of this project and rename it to something meaningful for you. Initialize the codebase as a public repository on [GitHub](https://github.com/). Creating a repo will make it easier to share your code with the community if you need help. If you're not sure how to do this, [have a read-through of this Try Git resource](https://try.github.io/). **⚠️ IMPORTANT ⚠️: There are already a couple of `.gitignore` files in this project. Please do not remove them or change the content of the files. If you create a brand new project, please use the `.gitignore` files provided in your new codebase. This is to avoid the accidental upload of the design files to GitHub. With these premium challenges, please be sure not to share the design files in your GitHub repo. Thanks!** +2. Configure your repository to publish your code to a web address. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, and we provide some recommendations below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes to create reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. + +## Deploying your project + +As mentioned above, there are many ways to host your project for free. Our recommend hosts are: + +- [GitHub Pages](https://pages.github.com/) +- [Vercel](https://vercel.com/) +- [Netlify](https://www.netlify.com/) + +You can host your site using one of these solutions or any of our other trusted providers. [Read more about our recommended and trusted hosts](https://medium.com/frontend-mentor/frontend-mentor-trusted-hosting-providers-bf000dfebe). + +## Create a custom `README.md` + +We strongly recommend overwriting this `README.md` with a custom one. We've provided a template inside the [`README-template.md`](./README-template.md) file in this starter code. + +The template provides a guide for what to add. A custom `README` will help you explain your project and reflect on your learnings. Please feel free to edit our template as much as you like. + +Once you've added your information to the template, delete this file and rename the `README-template.md` file to `README.md`. That will make it show up as your repository's README file. + +## Submitting your solution + +Submit your solution on the platform for the rest of the community to see. Follow our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) for tips on how to do this. + +Remember, if you're looking for feedback on your solution, be sure to ask questions when submitting it. The more specific and detailed you are with your questions, the higher the chance you'll get valuable feedback from the community. + +**⚠️ IMPORTANT ⚠️: With these premium challenges, please be sure not to upload the design files to GitHub when you're submitting to the platform and sharing it around. If you've created a brand new project, the easiest way to do that is to copy across the `.gitignore` provided in this starter project.** + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +2. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor**, including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. +3. Share your solution on other social channels like LinkedIn. +4. Blog about your experience building your project. Writing about your workflow, technical choices, and talking through your code is a brilliant way to reinforce what you've learned. Great platforms to write on are [dev.to](https://dev.to/), [Hashnode](https://hashnode.com/), and [CodeNewbie](https://community.codenewbie.org/). + +We provide templates to help you share your solution once you've submitted it on the platform. Please do edit them and include specific questions when you're looking for feedback. + +The more specific you are with your questions the more likely it is that another member of the community will give you feedback. + +## Got feedback for us? + +We love receiving feedback! We're always looking to improve our challenges and our platform. So if you have anything you'd like to mention, please email hi[at]frontendmentor[dot]io. + +**Have fun building!** 🚀 diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/README.md b/projects/FrontendMentor/newbie/pod-request-access-landing-page/README.md new file mode 100755 index 0000000..e605e69 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/README.md @@ -0,0 +1,87 @@ +# Frontend Mentor - Pod request access landing page solution + +This is a solution to the [Pod request access landing page challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/pod-request-access-landing-page-eyTmdkLSG). Frontend Mentor challenges help you improve your coding skills by building realistic projects. + +## Table of contents + +- [Frontend Mentor - Pod request access landing page solution](#frontend-mentor---pod-request-access-landing-page-solution) + - [Table of contents](#table-of-contents) + - [Overview](#overview) + - [The challenge](#the-challenge) + - [Screenshot](#screenshot) + - [Links](#links) + - [My process](#my-process) + - [Built with](#built-with) + - [What I learned](#what-i-learned) + - [Continued development](#continued-development) + - [Useful resources](#useful-resources) + - [Author](#author) + +## Overview + +### The challenge + +Users should be able to: + +- View the optimal layout depending on their device's screen size +- See hover states for interactive elements +- Receive an error message when the form is submitted if: + - The `Email address` field is empty should show "Oops! Please add your email" + - The email is not formatted correctly should show "Oops! Please check your email" + +### Screenshot + +Here are the screenshots for the complete project. First is the mobile version running at 375x667 +![mobile](./screenshots/mobile.png) + +Then the tablet version 768x1024 + +![tablet](./screenshots/tablet.png) + +Then the desktop version, first without the error state and then with the error state + +![tablet](./screenshots/desktop.png) +![tablet](./screenshots/desktop_with_error.png) + +### Links + +- Solution URL: [Github](https://github.com/tarasis/tarasis.github.io/tree/main/projects/FrontendMentor/newbie/pod-request-access-landing-page) +- Live Site URL: [Github.io](https://tarasis.github.io/FrontendMentor/newbie/pod-request-access-landing-page) + +## My process + +### Built with + +- Semantic HTML5 markup +- CSS custom properties +- Flexbox +- Mobile-first workflow + +### What I learned + +The approach to this was more difficult than any of the Frontend Mentor challenges that I had approached so far. Basically till now I've only approached the newbie free projects (sometimes working with the figma design file and sometimes not). + +Now I have to think about Mobile, Tablet, and Desktop; rather than just Mobile and Desktop. + +Also interesting was working without a style guide document + figma doc. This time I just had the figma document, so I had to make more notes for myself. Interesting particularly because it wasn't clear from the design section what weights of Chivo I needed. + +I ended up using fixed values for position between the three version with I concede is problematic. + +I tried to use properties a lot so that I can just change the values in the `:root` for each media section. I got a little sloppy towards the end and haven't moved all the values I can into properties. I find that using properties leads to a cleaner CSS file and easier cognitive load. + +For email validation I simply used a pattern set on the input field, and then a combination of `:invalid`, `:valid` and `:placeholder-shown` to affect whether the formatting error is show; rather than taking a JavaScript approach. This does mean I have only implemented one of the two error states. (Honestly I had missed there was a second till I was working on this readme) + +### Continued development + +Focus on improving positioning when dealing with three different formats. + +### Useful resources + +- [Codepen showing CSS pattern matching & errors](https://codepen.io/jh3y/pen/yLKMOBm) - Found this method of handling error handling for input fields. + +## Author + +- Blog - [Robert McGovern Blog](https://tarasis.net) +- Portfolio - [Robert McGovern Portfolio](https://rmcg.dev) +- Frontend Mentor - [@tarasis](https://www.frontendmentor.io/profile/tarasis) +- Twitter - [@tarasis](https://www.twitter.com/tarasis) diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/apple-podcast.svg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/apple-podcast.svg new file mode 100755 index 0000000..ab71b52 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/apple-podcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/bg-pattern-dots.svg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/bg-pattern-dots.svg new file mode 100755 index 0000000..c913938 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/bg-pattern-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/desktop/image-host.jpg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/desktop/image-host.jpg new file mode 100755 index 0000000..5584984 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/desktop/image-host.jpg differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/favicon-32x32.png b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/favicon-32x32.png new file mode 100755 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/google-podcasts.svg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/google-podcasts.svg new file mode 100755 index 0000000..e77e7c5 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/google-podcasts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/logo.svg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/logo.svg new file mode 100755 index 0000000..65c91eb --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/mobile/image-host.jpg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/mobile/image-host.jpg new file mode 100755 index 0000000..e5a3a9c Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/mobile/image-host.jpg differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/pocket-casts.svg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/pocket-casts.svg new file mode 100755 index 0000000..6a6acc6 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/pocket-casts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/spotify.svg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/spotify.svg new file mode 100755 index 0000000..b6ab446 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/tablet/image-host.jpg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/tablet/image-host.jpg new file mode 100755 index 0000000..acbca67 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/assets/tablet/image-host.jpg differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/css/style.css b/projects/FrontendMentor/newbie/pod-request-access-landing-page/css/style.css new file mode 100644 index 0000000..a4157e4 --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/css/style.css @@ -0,0 +1,353 @@ +/* Sizes + Mobile: 375x667 + Tablet: 768x1024 + Desktop: 1440x900 +*/ + +*, +::after, +::before { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +input { + font-size: inherit; + line-height: inherit; +} + +:root { + /* Line Height */ + --lh-28px: 1.75rem; + --lh-25px: 1.5625rem; + --lh-38px: 2.375rem; + --lh-56px: 3.5rem; + --lh-62px: 3.875rem; + + /* Colors */ + --col-lime-green: hsla(157, 74%, 62%, 1); + --col-lime-green-hover: hsla(157, 100%, 85%, 1); + + --col-dark-blue: hsla(225, 26%, 23%, 1); + --col-darker-blue: hsl(225, 36%, 11%); + + --col-light-blue: hsla(225, 21%, 45%, 1); + --col-lighter-blue: hsla(225, 40%, 83%, 1); + + --col-white: hsla(0, 0%, 100%, 1); + + /* Fonts */ + + --ff-chivo: "Chivo", sans-serif; + --fs-14px: 0.875rem; + --fs-15px: 0.9375rem; + --fs-18px: 1.125rem; + --fs-48px: 3rem; + --fs-52px: 3.25rem; + --fs-26px: 1.625rem; + + --background-image: url(../assets/mobile/image-host.jpg); + --background-image-opacity: 0.9; + + --text-alignment: center; + + --logos-height-17px: 1.0625rem; + --logos-height-29px: 1.8125rem; + + --border-radius: 28px; + + --title-margin-bottom: 1rem; + + /* Variables for Elements */ + --fs-title: var(--fs-26px); + --lh-title: var(--lh-38px); + --fs-blurb: var(--fs-15px); + --lh-blurb: var(--lh-25px); + + --logos-height: var(--logos-height-17px); + + /* Email Waring */ + --warning-visible: visible; + --fs-warning: 0; +} + +body { + width: 100%; + min-height: 100vh; + + font-family: "Chivo", sans-serif; + font-size: 0.875rem; + + display: flex; + flex-direction: column; + + /* Turned off for mobile so I can get exact match */ + /* align-items: center; + justify-content: center; */ + + background-color: var(--col-darker-blue); + color: var(--col-lighter-blue); + + text-align: var(--text-alignment); + + background-image: var(--background-image); + background-repeat: no-repeat; +} + +header { + /* Added to get exact mobile match */ + margin-top: 3.875rem; + margin-bottom: 3.5rem; +} + +main::before { + content: " "; + background-color: var(--col-darker-blue); + + mix-blend-mode: normal; + + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + /* opacity: var(--background-image-opacity); */ + opacity: var(--background-image-opacity); + z-index: -1; +} + +main { + display: flex; + flex-direction: column; + + padding: 0 1.5rem; +} + +.logo { + order: 1; + /* margin-bottom: 3.5625rem; */ + height: 3.5rem; +} + +.title { + order: 2; + color: var(--col-lime-green); + + font-size: var(--fs-title); + line-height: var(--lh-title); + + text-transform: uppercase; + + margin-bottom: var(--title-margin-bottom); + font-weight: normal; +} + +.title span { + color: var(--col-white); +} +.blurb { + order: 3; + font-size: var(--fs-blurb); + line-height: var(--lh-blurb); + margin-bottom: 2rem; +} +.logos-section { + order: 4; + margin-bottom: 3rem; + + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; + height: var(--logos-height); +} + +.logos-section img { + height: var(--logos-height); +} + +.email-form { + order: 5; + font-size: var(--fs-14px); + line-height: var(--lh-28px); +} + +.email-form:is(:invalid):has(.email-form__field:is(:placeholder-shown)) { + --fs-warning: 0; +} +.email-form:where(:invalid) { + --fs-warning: 14; +} + +.email-form:is(:valid) { + --fs-warning: 0; +} + +.email-form__field { + width: 100%; + border-radius: var(--border-radius); + background-color: var(--col-dark-blue); + padding: 0.5625rem 0; + color: var(--col-lighter-blue); + margin-bottom: 1rem; + padding-left: 2rem; + border-width: 0px; +} + +.email-form__field:is(:active, :focus, :not(:placeholder-shown)) { + color: var(--col-white); +} + +.email-form__button-submit { + width: 100%; + border-radius: var(--border-radius); + background-color: var(--col-lime-green); + padding: 0.5625rem 0; + color: var(--col-darker-blue); + border-width: 0px; +} + +.email-form__button-submit:hover, +.email-form__button-submit:focus { + background-color: var(--col-lime-green-hover); +} + +.email-warning { + font-size: var(--fs-warning); + color: red; + position: relative; + bottom: -5px; + height: 0; +} + +.dots-image { + visibility: hidden; +} + +/* Tablet */ +@media screen and (min-width: 760px) { + :root { + --background-image: url(../assets/tablet/image-host.jpg); + --text-alignment: unset; + --background-image-opacity: 1; + --fs-title: var(--fs-48px); + --lh-title: var(--lh-56px); + --fs-blurb: var(--fs-18px); + --lh-blurb: var(--lh-28px); + + --logos-height: var(--logos-height-29px); + + --title-margin-bottom: 2rem; + } + + body { + /* align-items: center; */ + justify-content: center; + + background-position: top right; + } + + header { + position: absolute; + top: 0px; + left: 0px; + margin-top: 3.125rem; + margin-left: 2.4375rem; + } + + main { + padding: unset; + width: 39.6875rem; + height: 31.875rem; + padding-top: 5.75rem; + margin-left: 2.4375rem; + } + + .title { + width: 25ch; + } + + .blurb { + width: 40ch; + margin-bottom: 2.5rem; + } + + .logos-section { + order: 5; + margin-bottom: unset; + justify-content: space-evenly; + } + + .email-form { + order: 4; + margin-bottom: 4rem; + position: relative; + } + + .email-form__field { + width: 48ch; + z-index: -1; + } + + .email-form__button-submit { + width: unset; + padding: 0.5625rem 1.6875rem; + position: relative; + right: 10rem; + } + + .email-warning { + bottom: 1.25rem; + padding-left: 2rem; + } + + .dots-image { + visibility: visible; + position: absolute; + + bottom: 0px; + left: 1.875rem; + } + + main::before { + background-color: unset; + } + + main { + background-color: var(--col-darker-blue); + } +} + +/* Desktop */ +@media screen and (min-width: 1430px) { + :root { + --background-image: url(../assets/desktop/image-host.jpg); + + --fs-title: var(--fs-52px); + --lh-title: var(--lh-62px); + + --title-margin-bottom: 1.5rem; + } + + body { + background-position: center right; + } + + header { + margin-top: 6.375rem; + margin-left: 10.3125rem; + } + + main { + padding-top: 5.5rem; + margin-left: 10.3125rem; + width: 45.25rem; + } + + .dots-image { + bottom: 4.875rem; + right: 0px; + left: unset; + } +} diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/designs/Mobile.png b/projects/FrontendMentor/newbie/pod-request-access-landing-page/designs/Mobile.png new file mode 100644 index 0000000..3ead1b2 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/designs/Mobile.png differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/index.html b/projects/FrontendMentor/newbie/pod-request-access-landing-page/index.html new file mode 100755 index 0000000..c225fbe --- /dev/null +++ b/projects/FrontendMentor/newbie/pod-request-access-landing-page/index.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + Frontend Mentor | Pod request access landing page + + + +
+ +
+
+

Publish your podcasts everywhere.

+

+ Upload your audio to Pod with a single click. We’ll then distribute your podcast to Spotify, + Apple Podcasts, Google Podcasts, Pocket Casts and more! +

+
+ + + + +
+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/js/script.js b/projects/FrontendMentor/newbie/pod-request-access-landing-page/js/script.js new file mode 100644 index 0000000..e69de29 diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/preview.jpg b/projects/FrontendMentor/newbie/pod-request-access-landing-page/preview.jpg new file mode 100755 index 0000000..cb7923f Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/preview.jpg differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/.forgit b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/.forgit new file mode 100644 index 0000000..e69de29 diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/desktop.png b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/desktop.png new file mode 100644 index 0000000..dbae944 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/desktop.png differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/desktop_with_error.png b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/desktop_with_error.png new file mode 100644 index 0000000..e88b407 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/desktop_with_error.png differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/mobile.png b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/mobile.png new file mode 100644 index 0000000..de84bd6 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/mobile.png differ diff --git a/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/tablet.png b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/tablet.png new file mode 100644 index 0000000..05c6de0 Binary files /dev/null and b/projects/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/tablet.png differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/.gitignore b/projects/FrontendMentor/newbie/social-proof-section/.gitignore new file mode 100644 index 0000000..c306796 --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/.gitignore @@ -0,0 +1,15 @@ +# Avoid accidental Sketch file upload +############################################### +## Please do not remove line 5 - thanks! 🙂 ## +############################################### +*.sketch + +# Avoid accidental XD or Figma upload if you convert the design file +####################################################### +## Please do not remove lines 11 and 12 - thanks! 🙂 ## +####################################################### +*.xd +*.fig + +# Avoid your project being littered with annoying .DS_Store files! +.DS_Store diff --git a/projects/FrontendMentor/newbie/social-proof-section/README.md b/projects/FrontendMentor/newbie/social-proof-section/README.md new file mode 100644 index 0000000..801e4c9 --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/README.md @@ -0,0 +1,79 @@ +# Frontend Mentor - Social proof section + +![Design preview for the Social proof section coding challenge](./design/desktop-preview.jpg) + +## Welcome! 👋 + +Thanks for checking out this front-end coding challenge. + +[Frontend Mentor](https://www.frontendmentor.io) challenges allow you to improve your skills in a real-life workflow. + +**To do this challenge, you need a basic understanding of HTML and CSS.** + +## The challenge + +Your challenge is to build out this social proof section and get it looking as close to the design as possible. + +You can use any tools you like to help you complete the challenge. So if you've got something you'd like to practice, feel free to give it a go. + +Your users should be able to: + +- View the optimal layout for the section depending on their device's screen size + +Want some support on the challenge? [Join our Slack community](https://www.frontendmentor.io/slack) and ask questions in the **#help** channel. + +## Where to find everything + +Your task is to build out the project to the designs inside the `/design` folder. You will find both a mobile and a desktop version of the design to work to. + +The designs are in JPG static format. This will mean that you'll need to use your best judgment for styles such as `font-size`, `padding` and `margin`. This should help train your eye to perceive differences in spacings and sizes. + +If you would like the Sketch file in order to inspect the design in more detail it is available to buy from the challenge page on the platform. + +You will find all the required assets in the `/images` folder. The assets are already optimized. + +There is also a `style-guide.md` file, which contains the information you'll need, such as color palette and fonts. + +## Building your project + +Feel free to use any workflow that you feel comfortable with. Below is a suggested process, but do not feel like you need to follow these steps: + +1. Initialize your project as a public repository on [GitHub](https://github.com/). This will make it easier to share your code with the community if you need some help. If you're not sure how to do this, [have a read through of this Try Git resource](https://try.github.io/). +2. Configure your repository to publish your code to a URL. This will also be useful if you need some help during a challenge as you can share the URL for your project with your repo URL. There are a number of ways to do this, but we recommend using [Vercel](https://bit.ly/fem-vercel). We've got more information about deploying your project with Vercel below. +3. Look through the designs to start planning out how you'll tackle the project. This step is crucial to help you think ahead for CSS classes that you could create to make reusable styles. +4. Before adding any styles, structure your content with HTML. Writing your HTML first can help focus your attention on creating well-structured content. +5. Write out the base styles for your project, including general content styles, such as `font-family` and `font-size`. +6. Start adding styles to the top of the page and work down. Only move on to the next section once you're happy you've completed the area you're working on. +7. If you'd like to try making your project fully responsive, we'd recommend checking out [Sizzy](https://bit.ly/fm-sizzy). It's a great browser that makes it easy to view your site across multiple devices. + +## Deploying your project + +As mentioned above, there are a number of ways to host your project for free. We recommend using [Vercel](https://bit.ly/fem-vercel) as it's an amazing service and extremely simple to get set up with. If you'd like to use Vercel, here are some steps to follow to get started: + +1. [Sign up to Vercel](https://bit.ly/fem-vercel-signup) and go through the onboarding flow, ensuring your GitHub account is connected by using their [Vercel for GitHub](https://vercel.com/docs/v2/git-integrations/vercel-for-github) integration. +2. Connect your project to Vercel from the ["Import project" page](https://vercel.com/import), using the "From Git Repository" button and selecting the project you want to deploy. +3. Once connected, every time you `git push`, Vercel will create a new [deployment](https://vercel.com/docs/v2/platform/deployments) and the deployment URL will be shown on your [Dashboard](https://vercel.com/dashboard). You will also receive an email for each deployment with the URL. + +## Sharing your solution + +There are multiple places you can share your solution: + +1. Submit it on the platform so that other users will see your solution on the site. Here's our ["Complete guide to submitting solutions"](https://medium.com/frontend-mentor/a-complete-guide-to-submitting-solutions-on-frontend-mentor-ac6384162248) to help you do that. +2. Share your solution page in the **#finished-projects** channel of the [Slack community](https://www.frontendmentor.io/slack). +3. Tweet [@frontendmentor](https://twitter.com/frontendmentor) and mention **@frontendmentor** including the repo and live URLs in the tweet. We'd love to take a look at what you've built and help share it around. + +## Giving feedback + +Feedback is always welcome, so if you have any to give on this challenge please email hi[at]frontendmentor[dot]io. + +This challenge is completely free. Please share it with anyone who will find it useful for practice. + +**Have fun building!** 🚀 + +## Community Sponsors + +A massive thank you to our community sponsors! + +- [Contrast](https://bit.ly/fem-contrast) reimagines how developers inspect, collaborate, and build components off Figma designs. +- [Diversify Tech](https://bit.ly/fem-diversify-tech) is an amazing resource for underrepresented people in tech. The site features job listings for anyone seeking new opportunities. The resource section is also full of useful links to dive into! +- [Triplebyte](http://bit.ly/fem-triplebyte) can save a lot of time and stress during the job hunting process. Their free, confidential quiz makes it so that companies end up pitching you for their vacant job roles. diff --git a/projects/FrontendMentor/newbie/social-proof-section/design/desktop-design.jpg b/projects/FrontendMentor/newbie/social-proof-section/design/desktop-design.jpg new file mode 100644 index 0000000..a948747 Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/design/desktop-design.jpg differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/design/desktop-preview.jpg b/projects/FrontendMentor/newbie/social-proof-section/design/desktop-preview.jpg new file mode 100644 index 0000000..ec414fb Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/design/desktop-preview.jpg differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/design/mobile-design.jpg b/projects/FrontendMentor/newbie/social-proof-section/design/mobile-design.jpg new file mode 100644 index 0000000..93b3e37 Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/design/mobile-design.jpg differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-bottom-desktop.svg b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-bottom-desktop.svg new file mode 100644 index 0000000..a9ab79c --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-bottom-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-bottom-mobile.svg b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-bottom-mobile.svg new file mode 100644 index 0000000..f42595f --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-bottom-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-top-desktop.svg b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-top-desktop.svg new file mode 100644 index 0000000..8bd11f8 --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-top-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-top-mobile.svg b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-top-mobile.svg new file mode 100644 index 0000000..7f19323 --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/images/bg-pattern-top-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/favicon-32x32.png b/projects/FrontendMentor/newbie/social-proof-section/images/favicon-32x32.png new file mode 100644 index 0000000..1e2df7f Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/images/favicon-32x32.png differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/icon-star.svg b/projects/FrontendMentor/newbie/social-proof-section/images/icon-star.svg new file mode 100644 index 0000000..eb84b44 --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/images/icon-star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/image-anne.jpg b/projects/FrontendMentor/newbie/social-proof-section/images/image-anne.jpg new file mode 100644 index 0000000..3824a1c Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/images/image-anne.jpg differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/image-colton.jpg b/projects/FrontendMentor/newbie/social-proof-section/images/image-colton.jpg new file mode 100644 index 0000000..8102530 Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/images/image-colton.jpg differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/images/image-irene.jpg b/projects/FrontendMentor/newbie/social-proof-section/images/image-irene.jpg new file mode 100644 index 0000000..4a9653a Binary files /dev/null and b/projects/FrontendMentor/newbie/social-proof-section/images/image-irene.jpg differ diff --git a/projects/FrontendMentor/newbie/social-proof-section/index.html b/projects/FrontendMentor/newbie/social-proof-section/index.html new file mode 100644 index 0000000..595adaf --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/index.html @@ -0,0 +1,61 @@ + + + + + + + + + + Frontend Mentor | Social proof section + + + + + + 10,000+ of our users love our products. + + We only provide great products combined with excellent customer service. + See what our satisfied customers are saying about our services. + + Rated 5 Stars in Reviews + Rated 5 Stars in Report Guru + Rated 5 Stars in BestTech + + Colton Smith + Verified Buyer + "We needed the same printed design as the one we had ordered a week prior. + Not only did they find the original order, but we also received it in time. + Excellent!" + + Irene Roberts + Verified Buyer + "Customer service is always excellent and very quick turn around. Completely + delighted with the simplicity of the purchase and the speed of delivery." + + Anne Wallace + Verified Buyer + "Put an order with this company and can only praise them for the very high + standard. Will definitely use them again and recommend them to everyone!" + +
+ Challenge by + Frontend Mentor. Coded by Your Name Here. +
+ + diff --git a/projects/FrontendMentor/newbie/social-proof-section/style-guide.md b/projects/FrontendMentor/newbie/social-proof-section/style-guide.md new file mode 100644 index 0000000..392d07c --- /dev/null +++ b/projects/FrontendMentor/newbie/social-proof-section/style-guide.md @@ -0,0 +1,32 @@ +# Front-end Style Guide + +## Layout + +The designs were created to the following widths: + +- Mobile: 375px +- Desktop: 1440px + +## Colors + +### Primary + +Very Dark Magenta: hsl(300, 43%, 22%) +Soft Pink: hsl(333, 80%, 67%) + +### Neutral + +Dark Grayish Magenta: hsl(303, 10%, 53%) +Light Grayish Magenta: hsl(300, 24%, 96%) +White: hsl(0, 0%, 100%) + +## Typography + +### Body Copy + +- Font size: 15px + +### Font + +- Family: [Spartan](https://fonts.google.com/specimen/Spartan) +- Weights: 400, 500, 700 diff --git a/projects/random/alt-animated-typing/index.html b/projects/random/alt-animated-typing/index.html new file mode 100644 index 0000000..699c0c8 --- /dev/null +++ b/projects/random/alt-animated-typing/index.html @@ -0,0 +1,27 @@ + + + + + + + + + + Document + + + + +

Hello, my name is Kevin.

+

Welcome to my website!

+ + See how Kevin created this over on YT + + + \ No newline at end of file diff --git a/projects/random/alt-animated-typing/style.css b/projects/random/alt-animated-typing/style.css new file mode 100644 index 0000000..f61670b --- /dev/null +++ b/projects/random/alt-animated-typing/style.css @@ -0,0 +1,153 @@ +:root { + --bg-color: hsl(49 37% 94%); + --typewriterSpeed: 6s; + /* this is a pure HTML/CSS approach. If you want it to + be more dynamic then you would need JavaScript to grab + the H1 calculate its size and then have it update this + variable + + You would need to use querySelector to grab the :root + and put it in a variable, then use that variable (say r) + and do r.style.setProperty('--typewriterCharacters', h1.length) + assuming you've grabbed the h1 + */ + --typewriterCharacters: 24; +} + +body { + margin: 0; + font-family: "Source Sans Pro", sans-serif; + min-height: 100vh; + display: grid; + place-content: center; + text-align: center; + background: var(--bg-color); +} + +h1 { + /* for increasing and decreasing the font size depending on + device size */ + font-size: clamp(1rem, 3vw + 1rem, 4rem); + position: relative; + /* MUST BE A MONOSPACE FONT or the idea collapses per Kevin */ + font-family: "Source Code Pro", monospace; + /* position: relative; */ + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} + +.subtitle { + color: hsl(0 0% 0% / 0.7); + font-size: 2rem; + font-weight: 400; + /* Below makes the subtitle appear to fade onto the page */ + opacity: 0; + transform: translateY(3rem); + animation: fadeInUp 2s ease calc(var(--typewriterSpeed) + 0.5s) forwards; +} + +h1::before, +h1::after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +h1::before { + /* a mask font color, needs to be the same color as the page + or container background color */ + background-color: var(--bg-color); + /* the number of steps is equal to the number of characters + that the h1 is. However in CSS you can see length of h1 so + you need to do this manually. */ + animation: typewriting var(--typewriterSpeed) + steps(var(--typewriterCharacters)) 1s forwards; +} + +h1::after { + /* em so it can respond to font size change */ + width: 0.125em; + background: black; + /* the number of steps is equal to the number of characters + that the h1 is. However in CSS you can see length of h1 so + you need to do this manually. */ + animation: typewriting var(--typewriterSpeed) + steps(var(--typewriterCharacters)) 1s forwards, + blink 500ms steps(var(--typewriterCharacters)) infinite; +} + +@keyframes typewriting { + to { + left: 100%; + } +} + +@keyframes blink { + to { + background: transparent; + } +} + +@keyframes fadeInUp { + to { + opacity: 1; + transform: translateY(0); + } +} + +/* +h1::before { + background: var(--bg-color); + -webkit-animation: typewriter var(--typewriterSpeed) steps(var(--typewriterCharacters)) 1s forwards; + animation: typewriter var(--typewriterSpeed) steps(var(--typewriterCharacters)) 1s forwards; +} + +h1::after { + width: 0.125em; + background: black; + -webkit-animation: typewriter var(--typewriterSpeed) steps(var(--typewriterCharacters)) 1s forwards, blink 750ms steps(var(--typewriterCharacters)) infinite; + animation: typewriter var(--typewriterSpeed) steps(var(--typewriterCharacters)) 1s forwards, blink 750ms steps(var(--typewriterCharacters)) infinite; +} + +.subtitle { + color: rgba(0, 0, 0, 0.7); + font-size: 2rem; + font-weight: 400; + opacity: 0; + transform: translateY(3rem); + -webkit-animation: fadeInUp 2s ease calc(var(--typewriterSpeed) + 2s) forwards; + animation: fadeInUp 2s ease calc(var(--typewriterSpeed) + 2s) forwards; +} + +@-webkit-keyframes typewriter { + to { + left: 100%; + } +} + +@-webkit-keyframes blink { + to { + background: transparent; + } +} +@-webkit-keyframes fadeInUp { + to { + opacity: 1; + transform: translateY(0); + } +} +*/ +#yt-link { + position: absolute; + bottom: 2em; + width: 100%; + color: rgba(0, 0, 0, 0.7); +} +#yt-link:hover, +#yt-link:focus { + color: teal; +} diff --git a/projects/random/animated-gradient-border/index.html b/projects/random/animated-gradient-border/index.html new file mode 100644 index 0000000..c0bddbe --- /dev/null +++ b/projects/random/animated-gradient-border/index.html @@ -0,0 +1,122 @@ + + + + + + + + Animated Gradient Border + + + + + + +
+

Animated Gradient Border

+

From a youtube short video, link to be added later.

+
+ +
+
+

Premium

+
+ $20 + / + month +
+ + +
+
+ + + \ No newline at end of file diff --git a/projects/random/animated-grid-boxes/index.html b/projects/random/animated-grid-boxes/index.html new file mode 100644 index 0000000..367147e --- /dev/null +++ b/projects/random/animated-grid-boxes/index.html @@ -0,0 +1,38 @@ + + + + + + + + + Animated Grid Boxes + + + +
+

Animated Grid Boxes

+

Code from https://fireship.io/lessons/three-responsive-css-grid-layouts/ + change based on comment that + simplifies the css down to one rule, but puts some of the info into the html to mark each div with variables + for the animiation delay (--i) and the name of the box's grid space (--g)

+
+
+
+
a
+
b
+
c
+
d
+
e
+
f
+
g
+
h
+
i
+
j
+
k
+
l
+
main
+
+
+ + + \ No newline at end of file diff --git a/projects/random/animated-grid-boxes/style.css b/projects/random/animated-grid-boxes/style.css new file mode 100644 index 0000000..f22ad11 --- /dev/null +++ b/projects/random/animated-grid-boxes/style.css @@ -0,0 +1,139 @@ +/* // BASE */ +body { + background: rgb(18, 18, 18); + color: hsl(0, 0%, 100%); + font-family: "Noto Sans", sans-serif; +} + +main { + padding: 1rem; +} + +.card { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: hsl(0, 0%, 21%); + font-size: 3rem; + color: hsl(0, 0%, 100%); + box-shadow: rgba(3, 8, 20, 0.1) 0px 0.15rem 0.5rem, + rgba(2, 8, 20, 0.1) 0px 0.075rem 0.175rem; + height: 100%; + width: 100%; + border-radius: 4px; + transition: all 500ms; + overflow: hidden; + + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +.card:hover { + box-shadow: rgba(2, 7, 19, 0.1) 0px 0.35em 1.175em, + rgba(2, 8, 20, 0.08) 0px 0.175em 0.5em; + transform: translateY(-3px) scale(1.1); + background-color: hsl(152, 90%, 75%); +} + +/* Specifics */ +.animated-grid { + height: 85vh; + margin-bottom: 200px; + + display: grid; + gap: 1rem; + + /* Explicit grid */ + grid-template-areas: + "a b c d" + "l 🌟 🌟 e" + "k 🌟 🌟 f" + "j i h g"; + + grid-template-rows: repeat(4, 25%); + grid-template-columns: 240px auto auto 240px; + + --stagger-delay: 100ms; +} + +@keyframes cardEntrance { + from { + opacity: 0; + transform: scale(0.3); + filter: hue-rotate(180deg); + } + to { + opacity: 1; + transform: scale(1); + filter: hue-rotate(0deg); + } +} + +.card { + background-color: hsl(152, 90%, 55%); + animation: cardEntrance 700ms ease-out; + animation-fill-mode: backwards; + grid-area: var(--g); + animation-delay: calc(var(--i) * var(--stagger-delay)); +} + +/* .card { + background-color: rgb(36, 243, 147); + animation: cardEntrance 700ms ease-out; + animation-fill-mode: backwards; +} */ + +/* .card:nth-child(1) { + grid-area: a; + animation-delay: calc(1 * var(--stagger-delay)); + } + .card:nth-child(2) { + grid-area: b; + animation-delay: calc(2 * var(--stagger-delay)); + } + .card:nth-child(3) { + grid-area: c; + animation-delay: calc(3 * var(--stagger-delay)); + } + .card:nth-child(4) { + grid-area: d; + animation-delay: calc(4 * var(--stagger-delay)); + } + .card:nth-child(5) { + grid-area: e; + animation-delay: calc(5 * var(--stagger-delay)); + } + .card:nth-child(6) { + grid-area: f; + animation-delay: calc(6 * var(--stagger-delay)); + } + .card:nth-child(7) { + grid-area: g; + animation-delay: calc(7 * var(--stagger-delay)); + } + .card:nth-child(8) { + grid-area: h; + animation-delay: calc(8 * var(--stagger-delay)); + } + .card:nth-child(9) { + grid-area: i; + animation-delay: calc(9 * var(--stagger-delay)); + } + .card:nth-child(10) { + grid-area: j; + animation-delay: calc(10 * var(--stagger-delay)); + } + .card:nth-child(11) { + grid-area: k; + animation-delay: calc(11 * var(--stagger-delay)); + } + .card:nth-child(12) { + grid-area: l; + animation-delay: calc(12 * var(--stagger-delay)); + } + .card:last-child { + grid-area: 🌟; + animation-delay: calc(13 * var(--stagger-delay)); + } */ diff --git a/projects/random/intersectional-observation/README.md b/projects/random/intersectional-observation/README.md new file mode 100644 index 0000000..2deca35 --- /dev/null +++ b/projects/random/intersectional-observation/README.md @@ -0,0 +1,27 @@ +# Basic Responsive Navigation + +Nearly every website needs a responsive navigation, but they can be confusing to layout. It’s not uncommon for developers to create two separate navigations: one for mobile and one for desktop. But there’s a better way! In this video, I'll show you how to create a fully responsive navigation menu with HTML, CSS, and Vanilla JavaScript. We’ll add aria attributes to achieve a basic accessible navigation. + + +🔗 Key Links 🔗 +- YouTube Video: https://youtu.be/63sxOYm9GwY +- Live Code: https://codinginpublic.dev/projects/responsive-navigation/ + +--------------------------------------- + +📹 Related Videos 📹 +- Intersection Observer playlist: https://www.youtube.com/playlist?list=PLoqZcxvpWzze3Hkult9jLfCvZlzCYLb8G +- Understanding Clamp(): https://youtu.be/Moely7aPYGE + +--------------------------------------- + +🧰 My Tools 🧰 +- VSCode Font/Theme: https://www.youtube.com/watch?v=5uETTXxVj8s +- VSCode Extensions: https://www.youtube.com/watch?v=0ABuzt8X5SA + +--------------------------------------- + +🌐 Connect With Me 🌐 +- Website: https://codinginpublic.dev +- Blog: https://chrispennington.blog +- Twitter: https://twitter.com/cpenned diff --git a/projects/random/intersectional-observation/about.html b/projects/random/intersectional-observation/about.html new file mode 100644 index 0000000..1ca7c52 --- /dev/null +++ b/projects/random/intersectional-observation/about.html @@ -0,0 +1,168 @@ + + + + + + + + + Responsive Navigation + + + + + + + + + +
+ View of earth from space +
+

The Next Frontier

+

Explore the universe of tomorrow.

+
+
+
+
+

Look to the Stars

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci + repellendus, id culpa minima officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas + expedita. Ullam unde optio ad voluptas praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+

Reasons to Travel

+
+
+ + + + + + + + +
+

Stars in the Sky

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + +
+

Moon Up Above

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + + + + + +
+

Ain’t no Sun Allowed

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+
+
+

Space Travel for Everyone

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit + nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati + magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci repellendus, id + culpa minima + officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas expedita. Ullam unde optio ad + voluptas + praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+ + + \ No newline at end of file diff --git a/projects/random/intersectional-observation/assets/logomark.svg b/projects/random/intersectional-observation/assets/logomark.svg new file mode 100644 index 0000000..a47c460 --- /dev/null +++ b/projects/random/intersectional-observation/assets/logomark.svg @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/projects/random/intersectional-observation/assets/navigation.svg b/projects/random/intersectional-observation/assets/navigation.svg new file mode 100644 index 0000000..69a12ef --- /dev/null +++ b/projects/random/intersectional-observation/assets/navigation.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/projects/random/intersectional-observation/assets/space.jpg b/projects/random/intersectional-observation/assets/space.jpg new file mode 100644 index 0000000..86b1ee5 Binary files /dev/null and b/projects/random/intersectional-observation/assets/space.jpg differ diff --git a/projects/random/intersectional-observation/assets/spaceLg.jpg b/projects/random/intersectional-observation/assets/spaceLg.jpg new file mode 100644 index 0000000..b35fd92 Binary files /dev/null and b/projects/random/intersectional-observation/assets/spaceLg.jpg differ diff --git a/projects/random/intersectional-observation/assets/spaceMd.jpg b/projects/random/intersectional-observation/assets/spaceMd.jpg new file mode 100644 index 0000000..91f1cd1 Binary files /dev/null and b/projects/random/intersectional-observation/assets/spaceMd.jpg differ diff --git a/projects/random/intersectional-observation/assets/spaceSm.jpg b/projects/random/intersectional-observation/assets/spaceSm.jpg new file mode 100644 index 0000000..a91a38b Binary files /dev/null and b/projects/random/intersectional-observation/assets/spaceSm.jpg differ diff --git a/projects/random/intersectional-observation/contact.html b/projects/random/intersectional-observation/contact.html new file mode 100644 index 0000000..1ca7c52 --- /dev/null +++ b/projects/random/intersectional-observation/contact.html @@ -0,0 +1,168 @@ + + + + + + + + + Responsive Navigation + + + + + + + + + +
+ View of earth from space +
+

The Next Frontier

+

Explore the universe of tomorrow.

+
+
+
+
+

Look to the Stars

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci + repellendus, id culpa minima officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas + expedita. Ullam unde optio ad voluptas praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+

Reasons to Travel

+
+
+ + + + + + + + +
+

Stars in the Sky

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + +
+

Moon Up Above

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + + + + + +
+

Ain’t no Sun Allowed

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+
+
+

Space Travel for Everyone

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit + nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati + magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci repellendus, id + culpa minima + officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas expedita. Ullam unde optio ad + voluptas + praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+ + + \ No newline at end of file diff --git a/projects/random/intersectional-observation/donate.html b/projects/random/intersectional-observation/donate.html new file mode 100644 index 0000000..1ca7c52 --- /dev/null +++ b/projects/random/intersectional-observation/donate.html @@ -0,0 +1,168 @@ + + + + + + + + + Responsive Navigation + + + + + + + + + +
+ View of earth from space +
+

The Next Frontier

+

Explore the universe of tomorrow.

+
+
+
+
+

Look to the Stars

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci + repellendus, id culpa minima officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas + expedita. Ullam unde optio ad voluptas praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+

Reasons to Travel

+
+
+ + + + + + + + +
+

Stars in the Sky

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + +
+

Moon Up Above

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + + + + + +
+

Ain’t no Sun Allowed

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+
+
+

Space Travel for Everyone

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit + nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati + magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci repellendus, id + culpa minima + officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas expedita. Ullam unde optio ad + voluptas + praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+ + + \ No newline at end of file diff --git a/projects/random/intersectional-observation/index.html b/projects/random/intersectional-observation/index.html new file mode 100644 index 0000000..1ca7c52 --- /dev/null +++ b/projects/random/intersectional-observation/index.html @@ -0,0 +1,168 @@ + + + + + + + + + Responsive Navigation + + + + + + + + + +
+ View of earth from space +
+

The Next Frontier

+

Explore the universe of tomorrow.

+
+
+
+
+

Look to the Stars

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci + repellendus, id culpa minima officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas + expedita. Ullam unde optio ad voluptas praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+

Reasons to Travel

+
+
+ + + + + + + + +
+

Stars in the Sky

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + +
+

Moon Up Above

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+ + + + + + + + + + +
+

Ain’t no Sun Allowed

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum obcaecati, + deserunt optio possimus atque qui!

+
+
+
+
+
+

Space Travel for Everyone

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Vitae eligendi quibusdam dolor + illum impedit + nisi. Eaque sequi necessitatibus voluptatum porro.

+

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Nesciunt fugiat commodi numquam? + Obcaecati + magni perferendis eligendi laudantium cum perspiciatis minus animi ipsa placeat adipisci repellendus, id + culpa minima + officiis fugiat quidem nisi sint consectetur eius vero velit sunt quas expedita. Ullam unde optio ad + voluptas + praesentium animi velit quae dicta?

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, temporibus.

+
+
+ + + \ No newline at end of file diff --git a/projects/random/intersectional-observation/nav.js b/projects/random/intersectional-observation/nav.js new file mode 100644 index 0000000..2679a1e --- /dev/null +++ b/projects/random/intersectional-observation/nav.js @@ -0,0 +1,43 @@ +const navBtn = document.querySelector("#menu-btn"); +const nav = document.querySelector("nav"); +const navLinks = document.querySelector(".nav-links"); + +navBtn.addEventListener("click", () => { + navLinks.classList.add("activated"); + const isExpanded = JSON.parse(navBtn.getAttribute("aria-expanded")); + navBtn.setAttribute("aria-expanded", !isExpanded); + !isExpanded && nav.classList.add("active"); +}); + +//INTERSECTION OBSERVER + +const navObs = new IntersectionObserver( + (entries) => nav.classList.toggle("active", !entries[0].isIntersecting), + { threshold: 0.85 } +); + +navObs.observe(document.querySelector("header")); + +const fadeUpObserver = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add("faded"); + fadeUpObserver.unobserve(entry.target); + } + }); + }, + { + rootMargin: "-15%", + } +); + +document.querySelectorAll(".fade-up").forEach((el) => { + fadeUpObserver.observe(el); +}); + +document.querySelectorAll(".nav-link").forEach((link) => { + if (link.href === window.location.href) { + link.setAttribute("aria-current", "page"); + } +}); diff --git a/projects/random/intersectional-observation/style.css b/projects/random/intersectional-observation/style.css new file mode 100644 index 0000000..4c2e27e --- /dev/null +++ b/projects/random/intersectional-observation/style.css @@ -0,0 +1,307 @@ +*, +*::after, +*::before { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root { + --bkg: linear-gradient(to top, #0f0915, #050307); + /* --dark: #050307; */ + --dark: #050307; + --text: #f9f6fe; + --accent: #4233e4; +} + +body { + font-family: "Nunito Sans", sans-serif; + font-size: clamp(1.1rem, 2vw + 1rem, 1.4rem); + line-height: 1.55; + background: var(--bkg); + color: var(--text); +} + +nav { + position: fixed; + z-index: 10; + width: 100%; + padding-block: 1.2rem; + background-color: transparent; + transition: background-color 800ms cubic-bezier(0.64, 0.04, 0.26, 0.87); +} + +nav.active { + background-color: var(--dark); +} + +.nav-link[aria-current="page"] { + text-decoration: underline wavy #f8c348 0.15rem; + text-underline-offset: 0.5rem; +} + +.nav-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +.logo { + color: var(--accent); + margin-inline: 0.5rem; + width: clamp(3rem, 10vw, 7.5rem); + display: grid; + place-items: center; +} + +.logo-link:focus-visible, +.nav-link:focus-visible { + outline: 4px solid var(--accent); + outline-offset: 0.2em; + border-radius: 0.5rem; +} + +.nav-links { + display: flex; + align-items: center; + flex-direction: column; + gap: 1.5rem; + transform: translate3d(0, -200%, 0); + position: absolute; + z-index: -1; + top: 3rem; + left: 0; + right: 0; + background-color: var(--dark); + padding: 1.5rem; + border-bottom: 4px solid var(--accent); + text-align: center; +} + +.nav-links.activated { + transition: transform 0.4s cubic-bezier(0.64, 0.04, 0.26, 0.87); +} + +.btn { + color: var(--text); + text-decoration: none; + padding: 0.3rem 1.5rem; + cursor: pointer; + border-radius: 0.5rem; +} + +.btn--accent { + background-color: var(--accent); + padding: 0.3rem 2rem; +} + +.btn--menu { + color: var(--accent); + background-color: transparent; + border: none; + display: grid; + place-items: center; + padding-inline: 1rem; + transition: transform 0.3s cubic-bezier(0.64, 0.04, 0.26, 0.87); +} + +li[role="none"], +.nav-link { + width: 100%; + display: block; + font-size: 1.1rem; + text-transform: uppercase; +} + +.btn--menu[aria-expanded="true"] { + transform: rotate(-180deg); +} + +.btn--menu[aria-expanded="true"] + .nav-links { + transform: translate3d(0, 0, 0); +} + +@media (min-width: 768px) { + .btn--menu { + display: none; + } + .nav-links { + position: static; + transform: translate3d(0, 0, 0); + flex-direction: row; + border: 0; + z-index: 0; + padding: 0; + inset: 0; + background-color: transparent; + } + li[role="none"], + .nav-link { + width: initial; + } +} + +main { + display: grid; + gap: clamp(4rem, 1.45454537rem + 11.636364vw, 8rem); + position: relative; + top: -10vh; +} + +h1 { + font-size: clamp(2.5rem, 5vw + 1rem, 8rem); + font-size: bolder; + line-height: 1.1; + letter-spacing: 0.02em; +} + +.h2 { + font-size: clamp(1.8rem, 4vw + 1rem, 3.5rem); + font-size: bolder; + line-height: 1.1; + color: var(--accent); +} + +.h3 { + font-size: clamp(1.2rem, 3vw + 1rem, 2.2rem); + line-height: 1.1; + color: var(--accent); +} + +.subheading { + color: var(--text); +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +header { + min-height: 100vh; + display: grid; + place-items: center; + text-align: center; + position: relative; +} + +.header__img { + position: absolute; + height: 100%; + width: 100%; + object-fit: cover; +} + +.container { + margin-inline: max((100% - 90rem) / 2, 1rem); +} + +.container--sm { + margin-inline: max((100% - 70rem) / 2, 2rem); +} + +.rise { + opacity: 0; + animation: rise 0.8s ease-in-out forwards; +} + +.rise.subheading { + animation: rise 1.2s ease-in-out forwards 0.5s; +} + +@keyframes rise { + 0% { + transform: translateY(2rem); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} + +.header-container { + display: grid; + gap: 1rem; + position: relative; + top: -5vh; +} + +.stars { + padding: clamp(1.2rem, 3.5vw, 2.5rem) clamp(1.2rem, 5vw, 3rem) 0; + background-color: var(--dark); + display: grid; + border-radius: 0.5rem; + gap: 1rem; +} + +.moons { + display: grid; + gap: 1rem; +} + +#stars { + text-align: center; +} + +.card-container { + display: flex; + flex-wrap: wrap; + gap: 2.5rem 3.5rem; +} + +.card { + flex: 1 1 100%; + display: grid; + place-items: center; + gap: 1.5rem; + padding: 2.5rem 1.5rem 1.5rem; + border: 5px solid var(--accent); + border-radius: 0.5rem; +} + +@media (min-width: 768px) { + .card { + flex: 1 1 28%; + } +} + +.card__image { + width: clamp(4rem, 10vw, 8rem); +} + +/* default transform was 1 second, I prefer a lower figure */ +.fade-up { + opacity: 0; + transform: translate3d(0, 5rem, 0); + transition: transform 0.4s cubic-bezier(0.64, 0.04, 0.26, 0.87), + opacity 0.8s cubic-bezier(0.64, 0.04, 0.26, 0.87); +} + +.fade-up.faded { + opacity: 1; + transform: translate3d(0, 0, 0); +} + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} diff --git a/projects/random/neon-text/index.html b/projects/random/neon-text/index.html new file mode 100644 index 0000000..2779fba --- /dev/null +++ b/projects/random/neon-text/index.html @@ -0,0 +1,28 @@ + + + + + + + + + + Neon Button + + + + + + + + + + Neon + + + \ No newline at end of file diff --git a/projects/random/neon-text/style.css b/projects/random/neon-text/style.css new file mode 100644 index 0000000..fb981d6 --- /dev/null +++ b/projects/random/neon-text/style.css @@ -0,0 +1,170 @@ +:root { + --clr-neon: rgb(165, 224, 16); + --clr-bg: hsl(323 21% 16%); +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +body { + min-height: 100vh; + display: grid; + place-items: center; + background: var(--clr-bg); + font-family: "Balsamiq Sans", cursive; + color: var(--clr-neon); + padding-right: 10rem; +} + +.neon-button { + color: var(--clr-neon); + font-size: 4rem; + display: inline-block; + cursor: pointer; + text-decoration: none; + /* Using em here to make border responsive to text size */ + border: var(--clr-neon) 0.125em solid; + /* Using em here to make padding responsive to text size */ + padding: 0.25em 1em; + /* Using em here to make border-radius responsive to text size */ + border-radius: 0.25em; + + /* this starts to give it the glow, you could just go with + a shadow that is the same color, but better to mix it a little + + ! NOTE: IF YOU MISS that second % in the hsl it breaks it!!! + */ + text-shadow: 0 0 0.125em hsl(0 0% 100% / 0.3), 0 0 0.45em currentColor; + + /* following makes the text backlit, better something else + note current color isn't needed, it is inherited */ + /* box-shadow: 0 0 0.5em 0 currentColor; */ + /* inset adds the shadow to the inside of the element */ + box-shadow: inset 0 0 0.5em 0 var(--clr-neon), 0 0 0.5em 0 var(--clr-neon); + + position: relative; +} + +.neon-button::before { + position: absolute; + content: ""; + pointer-events: none; + + background-color: var(--clr-neon); + /* could use following or ...*/ + /* top: 0; + right: 0; + bottom: 0; + left: 0; */ + /* use this ... */ + top: 120%; + left: 0; + width: 100%; + height: 100%; + + /* this shifts the effective camera perspective as if + its looking down along + translateZ would move it up or down, but isn't needed here -/+ + scale reduces size */ + transform: perspective(1em) rotateX(40deg) scale(1, 0.35); + /* makes it look more like a light is cast + play with the value till you find a look you like */ + filter: blur(1.5em); + /* opacity to adjust intensity, boost opacity to make it glow + more on a hover */ + opacity: 0.7; +} + +.neon-button::after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + box-shadow: 0 0 2em 0.5em var(--clr-neon); + opacity: 0; + + transition: opacity 100ms linear; +} + +.neon-button:focus::before, +.neon-button:hover::before { + opacity: 1; +} + +.neon-button:hover::after, +.neon-button:focus::after { + opacity: 1; +} + +.neon-button:is(:hover, :focus) { + background-color: var(--clr-neon); + color: var(--clr-bg); + /* could also be unset */ + text-shadow: none; +} + +/* below was from the original file, I commented it out and typed while watching the video*/ + +/* .neon-button { + font-size: 4rem; + display: inline-block; + cursor: pointer; + text-decoration: none; + color: var(--clr-neon); + border: var(--clr-neon) 0.125em solid; + padding: 0.25em 1em; + border-radius: 0.25em; + text-shadow: 0 0 0.125em rgba(255, 255, 255, 0.3), 0 0 0.45em currentColor; + box-shadow: inset 0 0 0.5em 0 var(--clr-neon), 0 0 0.5em 0 var(--clr-neon); + position: relative; +} */ + +/* .neon-button::before { + pointer-events: none; + content: ""; + position: absolute; + background: var(--clr-neon); + top: 120%; + left: 0; + width: 100%; + height: 100%; + transform: perspective(1em) rotateX(40deg) scale(1, 0.35); + filter: blur(1em); + opacity: 0.7; +} */ + +/* .neon-button::after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + box-shadow: 0 0 2em 0.5em var(--clr-neon); + opacity: 0; + background-color: var(--clr-neon); + z-index: -1; + transition: opacity 100ms linear; +} */ + +/* .neon-button:hover, +.neon-button:focus { + color: var(--clr-bg); + text-shadow: none; +} */ + +/* .neon-button:hover::before, +.neon-button:focus::before { + opacity: 1; +} */ +/* +.neon-button:hover::after, +.neon-button:focus::after { + opacity: 1; +} */ diff --git a/src/404.njk b/src/404.njk index daaff28..b8f5dba 100644 --- a/src/404.njk +++ b/src/404.njk @@ -6,7 +6,7 @@ css: ["/css/error.css"] ---
- +

Apologies, nothing to see here. Maybe try the main page

diff --git a/src/_data/webprojects.json b/src/_data/webprojects.json index a5b0672..d3f8af4 100644 --- a/src/_data/webprojects.json +++ b/src/_data/webprojects.json @@ -11,6 +11,28 @@ "title": "Newbie", "cssClass": "frontEndMentorChallenges", "challenges": [ + { + "title": "Pod Request Access Landing Page", + "url": "/FrontendMentor/newbie/pod-request-access-landing-page/", + "description": "", + "techUsed": [ + "html5", + "css3" + ], + "screenshotURL": "/FrontendMentor/newbie/pod-request-access-landing-page/screenshots/mobile.png", + "screenshotAltText": "Pod Request Landing Page Challenge from FrontendMentor" + }, + { + "title": "3 Column Preview Card Component", + "url": "/FrontendMentor/newbie/3-column-preview-card-component/", + "description": "", + "techUsed": [ + "html5", + "css3" + ], + "screenshotURL": "/FrontendMentor/newbie/3-column-preview-card-component/screenshots/desktop.png", + "screenshotAltText": "3 Column Preview Card Component Challenge from FrontendMentor" + }, { "title": "Order Summary Card Component", "url": "/FrontendMentor/newbie/order-summary-component/", diff --git a/src/css/style.css b/src/css/style.css index 756dace..33ce748 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -1,13 +1,15 @@ @import url("https://fonts.googleapis.com/css2?family=Black+Ops+One&family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap"); -/* +/* @import "@fontsource/black-ops-one/index.css"; +@import "@fontsource/source-sans-pro"; + */ +/* * Hi, thank you for checking out my CSS. Layout is currently Rev 2. * Plan is to do more interesting ones as I feel more comfortable doing things. * * For instance was thinking of swapping to a 3 column affair, with the title running * vertically in the first column. Second column is the projects, third the blurb * -* I'd like to add some animations and transitions, and a light and dark theme. */ :root { @@ -126,8 +128,8 @@ body { .card__content { z-index: 10; background: rgba(255, 255, 255, 0.9); - backdrop-filter: blur(100px); -webkit-backdrop-filter: blur(100px); + backdrop-filter: blur(100px); align-self: end; margin: 0.5rem; /*.5rem 2rem;*/ padding: 0.5rem;