1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-09-13 05:45:31 -04:00

honor webpack --mode instead of NODE_ENV

This commit is contained in:
2021-11-30 09:02:09 -05:00
parent d551fd89f6
commit 5f3b9b7a04
4 changed files with 285 additions and 274 deletions

View File

@@ -21,7 +21,6 @@ jobs:
- run: yarn install --frozen-lockfile
- run: yarn build
env:
NODE_ENV: production
SKIP_OPTIMIZE_IMAGES: true
- run: yarn lint
- run: npx -p @percy/cli percy snapshot ./public

View File

@@ -1,9 +1,8 @@
{
"name": "jarv.is",
"version": "1.3.37",
"private": true,
"homepage": "https://jarv.is/",
"license": "MIT",
"private": true,
"author": {
"name": "Jake Jarvis",
"email": "jake@jarv.is",
@@ -79,6 +78,10 @@
"gulp-html-minifier-terser": "^6.0.1",
"gulp-imagemin": "^8.0.0",
"hugo-extended": "0.89.4",
"imagemin-gifsicle": "^7.0.0",
"imagemin-mozjpeg": "github:jakejarvis/imagemin-mozjpeg.git#ff7f05ce95f1c6cb326e03e2d817502a231b94d8",
"imagemin-pngquant": "^9.0.2",
"imagemin-svgo": "^10.0.0",
"license-webpack-plugin": "^4.0.0",
"lint-staged": "^12.1.2",
"markdownlint-cli": "~0.30.0",
@@ -89,7 +92,7 @@
"postcss-loader": "^6.2.1",
"postcss-svgo": "^5.0.3",
"prettier": "~2.5.0",
"sass": "^1.43.5",
"sass": "^1.44.0",
"sass-loader": "^12.3.0",
"simple-git-hooks": "^2.7.0",
"source-map-loader": "^3.0.0",
@@ -102,23 +105,12 @@
"stylelint-scss": "~4.0.0",
"terser": "^5.10.0",
"terser-webpack-plugin": "^5.2.5",
"tslib": "^2.3.1",
"typescript": "^4.5.2",
"web-vitals": "^2.1.2",
"webpack": "^5.64.4",
"webpack-assets-manifest": "^5.0.6",
"webpack-cli": "^4.9.1",
"webpack-dev-server": "^4.6.0"
},
"optionalDependencies": {
"imagemin-gifsicle": "^7.0.0",
"imagemin-mozjpeg": "^9.0.0",
"imagemin-pngquant": "^9.0.2",
"imagemin-svgo": "^10.0.0"
},
"resolutions": {
"mozjpeg": "7.1.0"
},
"simple-git-hooks": {
"pre-commit": "npx lint-staged"
},
@@ -137,7 +129,6 @@
]
},
"volta": {
"node": "16.13.0",
"yarn": "1.22.17"
"node": "16.13.0"
}
}

View File

@@ -15,213 +15,217 @@ import postcssFocus from "postcss-focus";
// https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#what-do-i-use-instead-of-__dirname-and-__filename
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const isProd = process.env.NODE_ENV === "production";
const globalBannerText = `Licensed under MIT. Copyright (c) 2015-${new Date().getFullYear()} Jake Jarvis <https://jarv.is/>.`;
export default (env, argv) => {
const isProd = argv.mode === "production";
const globalBannerText = `Licensed under MIT. Copyright (c) 2015-${new Date().getFullYear()} Jake Jarvis <https://jarv.is/>.`;
export default {
entry: [path.resolve(__dirname, "assets/js/index.js"), path.resolve(__dirname, "assets/sass/main.scss")],
mode: isProd ? "production" : "development",
devtool: isProd ? "source-map" : "inline-source-map",
output: {
filename: isProd ? "js/[name]-[contenthash:6].js" : "js/[name].js",
path: path.resolve(__dirname, "static/assets/"),
publicPath: "/assets/",
clean: true,
environment: {
// https://github.com/babel/babel-loader#top-level-function-iife-is-still-arrow-on-webpack-5
arrowFunction: false,
return {
entry: [path.resolve(__dirname, "assets/js/index.js"), path.resolve(__dirname, "assets/sass/main.scss")],
mode: isProd ? "production" : "development",
devtool: isProd ? "source-map" : "inline-source-map",
output: {
filename: isProd ? "js/[name]-[contenthash:6].js" : "js/[name].js",
path: path.resolve(__dirname, "static/assets/"),
publicPath: "/assets/",
clean: true,
environment: {
// https://github.com/babel/babel-loader#top-level-function-iife-is-still-arrow-on-webpack-5
arrowFunction: false,
},
devtoolModuleFilenameTemplate: "webpack:///[resource-path]",
},
devtoolModuleFilenameTemplate: "webpack:///[resource-path]",
},
resolve: {
alias: {
// https://preactjs.com/guide/v10/getting-started#aliasing-in-webpack
react: "preact/compat",
"react-dom": "preact/compat",
resolve: {
alias: {
// https://preactjs.com/guide/v10/getting-started#aliasing-in-webpack
react: "preact/compat",
"react-dom/test-utils": "preact/test-utils",
"react-dom": "preact/compat",
"react/jsx-runtime": "preact/jsx-runtime",
},
},
},
plugins: [
new MiniCssExtractPlugin({
filename: isProd ? "css/[name]-[contenthash:6].css" : "css/[name].css",
}),
new webpack.BannerPlugin({
banner: `/*! ${globalBannerText} */`,
raw: true,
}),
new LicensePlugin({
outputFilename: "third_party.txt",
perChunkOutput: false,
addBanner: true,
renderBanner: (filename) => `/*!
plugins: [
new MiniCssExtractPlugin({
filename: isProd ? "css/[name]-[contenthash:6].css" : "css/[name].css",
}),
new webpack.BannerPlugin({
banner: `/*! ${globalBannerText} */`,
raw: true,
}),
new LicensePlugin({
outputFilename: "third_party.txt",
perChunkOutput: false,
addBanner: true,
renderBanner: (filename) => `/*!
* ${globalBannerText}
* See here for third-party libraries: https://jarv.is/assets/${filename}
*/`,
additionalModules: [
{
name: "twemoji",
directory: path.join(__dirname, "node_modules", "twemoji"),
},
],
licenseFileOverrides: {
twemoji: "LICENSE-GRAPHICS", // we only use the emojis, not the bundled code
},
excludedPackageTest: (packageName) => packageName.startsWith("preact-"),
}),
new CopyPlugin({
patterns: [
{
from: path.resolve(__dirname, "assets/images/"),
to: "images/",
globOptions: {
dot: false,
},
},
{
from: path.resolve(__dirname, "node_modules/twemoji-emojis/vendor/svg/"),
to: "emoji/",
globOptions: {
dot: false,
},
},
],
}),
new WebpackAssetsManifest({
writeToDisk: true, // allow Hugo to access file in dev mode
output: path.resolve(__dirname, "data/manifest.json"),
publicPath: true,
integrity: true,
integrityHashes: ["sha384"],
customize: (entry) => {
// don't add thousands of unneeded twemoji graphics to the manifest
if (entry.key.startsWith("emoji/") || entry.key.endsWith(".map")) return false;
},
}),
],
module: {
rules: [
{
test: /\.m?js$/,
enforce: "pre", // source-map-loader needs to come before everything else
use: ["source-map-loader"],
},
{
test: /\.m?js$/,
exclude: /node_modules/,
use: ["babel-loader"],
},
{
test: /\.(sa|sc|c)ss$/,
use: [
MiniCssExtractPlugin.loader,
additionalModules: [
{
loader: "css-loader",
options: {
sourceMap: true,
name: "twemoji",
directory: path.resolve(__dirname, "node_modules/twemoji/"),
},
],
licenseFileOverrides: {
twemoji: "LICENSE-GRAPHICS", // we only use the emojis, not the bundled code
},
excludedPackageTest: (packageName) => packageName.startsWith("preact-"),
}),
new CopyPlugin({
patterns: [
{
from: path.resolve(__dirname, "assets/images/"),
to: "images/",
globOptions: {
dot: false,
},
},
{
loader: "postcss-loader",
options: {
sourceMap: true,
postcssOptions: {
config: false,
plugins: [
autoprefixer(),
postcssSvgo({
encode: true,
}),
postcssFocus(),
],
},
},
},
{
loader: "sass-loader",
options: {
sourceMap: true,
from: path.resolve(__dirname, "node_modules/twemoji-emojis/vendor/svg/"),
to: "emoji/",
globOptions: {
dot: false,
},
},
],
},
{
test: /\.(png|jp(e*)g|svg|gif|ico)$/,
type: "asset/resource",
generator: {
filename: isProd ? "images/[name]-[contenthash:6][ext]" : "images/[name][ext]",
},
},
{
test: /\.(woff(2)?|ttf|otf|eot)$/,
type: "asset/resource",
generator: {
filename: isProd ? "fonts/[name]-[contenthash:6][ext]" : "fonts/[name][ext]",
},
},
],
},
performance: {
// only evaluate JS and CSS file sizes (ignore source maps, images, etc.)
assetFilter: (assetFilename) => /\.js$|\.css$/.test(assetFilename),
maxAssetSize: 990000, // ~99 KiB
},
optimization: {
sideEffects: true,
minimize: isProd,
minimizer: [
new TerserPlugin({
test: /\.js$/,
parallel: true,
terserOptions: {
sourceMap: true,
compress: {
drop_console: true,
passes: 3,
},
format: {
// cut all comments except for the banner declared above via LicensePlugin:
comments: (_astNode, comment) => comment.value.toLowerCase().includes("third-party libraries"),
ascii_only: true, // some symbols get disfigured otherwise
},
mangle: true,
},
extractComments: false,
}),
new CssMinimizerPlugin({
test: /\.css$/,
minify: CssMinimizerPlugin.cleanCssMinify,
minimizerOptions: {
compatibility: "*",
level: 2,
processImport: false,
sourceMap: true,
format: {
breaks: {
afterAtRule: true,
afterBlockBegins: true,
afterBlockEnds: true,
afterComment: true,
afterRuleEnds: true,
beforeBlockEnds: true,
},
spaces: {
beforeBlockBegins: true,
},
semicolonAfterLastProperty: true,
},
new WebpackAssetsManifest({
writeToDisk: true, // allow Hugo to access file in dev mode
output: path.resolve(__dirname, "data/manifest.json"),
publicPath: true,
integrity: true,
integrityHashes: ["sha384"],
customize: (entry) => {
// don't add thousands of unneeded twemoji graphics to the manifest
if (entry.key.startsWith("emoji/") || entry.key.endsWith(".map")) return false;
},
}),
],
},
devServer: {
static: {
directory: path.resolve(__dirname, "public"),
watch: true,
module: {
rules: [
{
test: /\.m?js$/,
enforce: "pre", // source-map-loader needs to come before everything else
use: ["source-map-loader"],
},
{
test: /\.m?js$/,
exclude: /node_modules/,
use: ["babel-loader"],
},
{
test: /\.(sa|sc|c)ss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
sourceMap: true,
},
},
{
loader: "postcss-loader",
options: {
sourceMap: true,
postcssOptions: {
config: false,
plugins: [
autoprefixer(),
postcssSvgo({
encode: true,
}),
postcssFocus(),
],
},
},
},
{
loader: "sass-loader",
options: {
sourceMap: true,
},
},
],
},
{
test: /\.(png|jp(e*)g|svg|gif|ico)$/,
type: "asset/resource",
generator: {
filename: isProd ? "images/[name]-[contenthash:6][ext]" : "images/[name][ext]",
},
},
{
test: /\.(woff(2)?|ttf|otf|eot)$/,
type: "asset/resource",
generator: {
filename: isProd ? "fonts/[name]-[contenthash:6][ext]" : "fonts/[name][ext]",
},
},
],
},
host: "0.0.0.0", // weird docker bind behavior
port: process.env.PORT || 1337,
compress: true,
liveReload: true,
setupExitSignals: false, // prevent dangling server when started via gulp
},
performance: {
// only evaluate JS and CSS file sizes (ignore source maps, images, etc.)
assetFilter: (assetFilename) => /\.js$|\.css$/.test(assetFilename),
maxAssetSize: 990000, // ~99 KiB
},
optimization: {
sideEffects: true,
minimize: isProd,
minimizer: [
new TerserPlugin({
test: /\.js$/,
parallel: true,
terserOptions: {
sourceMap: true,
compress: {
drop_console: true,
passes: 3,
},
format: {
// cut all comments except for the banner declared above via LicensePlugin:
comments: (_astNode, comment) => comment.value.toLowerCase().includes("third-party libraries"),
ascii_only: true, // some symbols get disfigured otherwise
},
mangle: true,
},
extractComments: false,
}),
new CssMinimizerPlugin({
test: /\.css$/,
minify: CssMinimizerPlugin.cleanCssMinify,
minimizerOptions: {
compatibility: "*",
level: 2,
processImport: false,
sourceMap: true,
format: {
breaks: {
afterAtRule: true,
afterBlockBegins: true,
afterBlockEnds: true,
afterComment: true,
afterRuleEnds: true,
beforeBlockEnds: true,
},
spaces: {
beforeBlockBegins: true,
},
semicolonAfterLastProperty: true,
},
},
}),
],
},
devServer: {
static: {
directory: path.resolve(__dirname, "public"),
watch: true,
},
host: "0.0.0.0", // weird docker bind behavior
port: process.env.PORT || 1337,
compress: true,
liveReload: true,
setupExitSignals: false, // prevent dangling server when started via gulp
},
};
};

151
yarn.lock
View File

@@ -997,10 +997,10 @@
version "3.0.0"
resolved "https://codeload.github.com/jakejarvis/eslint-config/tar.gz/cbe2b1e5fa675f787d38b5dd395aa13cfdfa371e"
"@jest/types@^27.2.5":
version "27.2.5"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132"
integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==
"@jest/types@^27.4.2":
version "27.4.2"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5"
integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
@@ -1277,9 +1277,9 @@
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*":
version "16.11.10"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.10.tgz#2e3ad0a680d96367103d3e670d41c2fed3da61ae"
integrity sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==
version "16.11.11"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.11.tgz#6ea7342dfb379ea1210835bada87b3c512120234"
integrity sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==
"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1":
version "2.4.1"
@@ -2148,7 +2148,7 @@ braces@^3.0.1, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.16.8, browserslist@^4.17.5, browserslist@^4.17.6:
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.16.8, browserslist@^4.17.5, browserslist@^4.18.1:
version "4.18.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f"
integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==
@@ -2779,11 +2779,11 @@ copy-webpack-plugin@^10.0.0:
serialize-javascript "^6.0.0"
core-js-compat@^3.18.0, core-js-compat@^3.19.1:
version "3.19.1"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.1.tgz#fe598f1a9bf37310d77c3813968e9f7c7bb99476"
integrity sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==
version "3.19.2"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.2.tgz#18066a3404a302433cb0aa8be82dd3d75c76e5c4"
integrity sha512-ObBY1W5vx/LFFMaL1P5Udo4Npib6fu+cMokeziWkA8Tns4FcDemKF5j9JvaI5JhdkW8EQJQGJN1EcrzmEwuAqQ==
dependencies:
browserslist "^4.17.6"
browserslist "^4.18.1"
semver "7.0.0"
core-js@3, core-js@^3.16.2, core-js@^3.19.2:
@@ -2931,10 +2931,10 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssnano-preset-default@^5.1.7:
version "5.1.7"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz#68c3ad1ec6a810482ec7d06b2d70fc34b6b0d70c"
integrity sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA==
cssnano-preset-default@^5.1.8:
version "5.1.8"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.8.tgz#7525feb1b72f7b06e57f55064cbdae341d79dea2"
integrity sha512-zWMlP0+AMPBVE852SqTrP0DnhTcTA2C1wAF92TKZ3Va+aUVqLIhkqKlnJIXXdqXD7RN+S1ujuWmNpvrJBiM/vg==
dependencies:
css-declaration-sorter "^6.0.3"
cssnano-utils "^2.0.1"
@@ -2961,7 +2961,7 @@ cssnano-preset-default@^5.1.7:
postcss-normalize-url "^5.0.3"
postcss-normalize-whitespace "^5.0.1"
postcss-ordered-values "^5.0.2"
postcss-reduce-initial "^5.0.1"
postcss-reduce-initial "^5.0.2"
postcss-reduce-transforms "^5.0.1"
postcss-svgo "^5.0.3"
postcss-unique-selectors "^5.0.2"
@@ -2972,11 +2972,11 @@ cssnano-utils@^2.0.1:
integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==
cssnano@^5.0.6:
version "5.0.11"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.11.tgz#743397a05e04cb87e9df44b7659850adfafc3646"
integrity sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg==
version "5.0.12"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.12.tgz#2c083a1c786fc9dc2d5522bd3c0e331b7cd302ab"
integrity sha512-U38V4x2iJ3ijPdeWqUrEr4eKBB5PbEKsNP5T8xcik2Au3LeMtiMHX0i2Hu9k51FcKofNZumbrcdC6+a521IUHg==
dependencies:
cssnano-preset-default "^5.1.7"
cssnano-preset-default "^5.1.8"
is-resolvable "^1.1.0"
lilconfig "^2.0.3"
yaml "^1.10.2"
@@ -3026,9 +3026,9 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
ms "2.0.0"
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
dependencies:
ms "2.1.2"
@@ -3441,9 +3441,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.896:
version "1.4.4"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.4.tgz#57311918524c1a26878c330537f967804d43788a"
integrity sha512-teHtgwcmVcL46jlFvAaqjyiTLWuMrUQO1JqV303JKB4ysXG6m8fXSFhbjal9st0r9mNskI22AraJZorb1VcLVg==
version "1.4.5"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.5.tgz#912e8fd1645edee2f0f212558f40916eb538b1f9"
integrity sha512-YKaB+t8ul5crdh6OeqT2qXdxJGI0fAYb6/X8pDIyye+c3a7ndOCk5gVeKX+ABwivCGNS56vOAif3TN0qJMpEHw==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -5087,9 +5087,9 @@ http-errors@~1.7.2:
toidentifier "1.0.0"
http-parser-js@>=0.5.1:
version "0.5.4"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.4.tgz#d1f3e45f31973de8393af2c725da5d42919ab2bb"
integrity sha512-Qn1yyi10ipcylSSqlTFsj7bhimACWbFm5w5JNMxhLKfcJAeWFBc+/VBv4mu5qlWSKr0cjXqtwM6HISZkESUILA==
version "0.5.5"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5"
integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==
http-proxy-middleware@^2.0.0:
version "2.0.1"
@@ -5198,6 +5198,14 @@ imagemin-mozjpeg@^9.0.0:
is-jpg "^2.0.0"
mozjpeg "^7.0.0"
"imagemin-mozjpeg@github:jakejarvis/imagemin-mozjpeg.git#ff7f05ce95f1c6cb326e03e2d817502a231b94d8":
version "9.0.0"
resolved "https://codeload.github.com/jakejarvis/imagemin-mozjpeg/tar.gz/ff7f05ce95f1c6cb326e03e2d817502a231b94d8"
dependencies:
execa "^4.0.0"
is-jpg "^2.0.0"
mozjpeg "7.1.0"
imagemin-optipng@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz#b88e5cf6da25cc8479e07cdf38c3ae0479df7ef2"
@@ -5252,6 +5260,11 @@ imagemoji@^0.1.4:
resolved "https://registry.yarnpkg.com/imagemoji/-/imagemoji-0.1.4.tgz#830bcae26e4cc58bb44ec9102b8775d850cc4ec3"
integrity sha512-bj8IOBOgXM2ntVoNyLxtHDKLvhKQ7a6cswXYaJQZctIEOSrnM+3h9S5oV0d/pTZBg46U1W9uU6W4ifi104ovlw==
immutable@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -5813,27 +5826,27 @@ isurl@^1.0.0-alpha5:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"
jest-get-type@^27.3.1:
version "27.3.1"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.3.1.tgz#a8a2b0a12b50169773099eee60a0e6dd11423eff"
integrity sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==
jest-get-type@^27.4.0:
version "27.4.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5"
integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==
jest-validate@^27.0.2:
version "27.3.1"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.3.1.tgz#3a395d61a19cd13ae9054af8cdaf299116ef8a24"
integrity sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==
version "27.4.2"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.2.tgz#eecfcc1b1c9429aa007da08a2bae4e32a81bbbc3"
integrity sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==
dependencies:
"@jest/types" "^27.2.5"
"@jest/types" "^27.4.2"
camelcase "^6.2.0"
chalk "^4.0.0"
jest-get-type "^27.3.1"
jest-get-type "^27.4.0"
leven "^3.1.0"
pretty-format "^27.3.1"
pretty-format "^27.4.2"
jest-worker@^27.0.2, jest-worker@^27.0.6:
version "27.3.1"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2"
integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==
version "27.4.2"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.2.tgz#0fb123d50955af1a450267787f340a1bf7e12bc4"
integrity sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
@@ -6645,7 +6658,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.5:
version "1.1.0"
resolved "https://codeload.github.com/sindresorhus/modern-normalize/tar.gz/1fc6b5a86676b7ac8abc62d04d6080f92debc70f"
mozjpeg@7.1.0, mozjpeg@^7.0.0:
mozjpeg@7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-7.1.0.tgz#23f202f3e48e98f02ed84f415358d4cbfab66c19"
integrity sha512-A6nVpI33DVi04HxatRx3PZTeVAOP1AC/T/5kXEvP0U8F+J11mmFFDv46BM2j5/cEyzDDtK8ptHeBSphNMrQLqA==
@@ -6654,6 +6667,14 @@ mozjpeg@7.1.0, mozjpeg@^7.0.0:
bin-wrapper "^4.0.0"
logalot "^2.1.0"
mozjpeg@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-7.1.1.tgz#dfb61953536e66fcabd4ae795e7a312d42a51f18"
integrity sha512-iIDxWvzhWvLC9mcRJ1uSkiKaj4drF58oCqK2bITm5c2Jt6cJ8qQjSSru2PCaysG+hLIinryj8mgz5ZJzOYTv1A==
dependencies:
bin-build "^3.0.0"
bin-wrapper "^4.0.0"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -7731,12 +7752,12 @@ postcss-ordered-values@^5.0.2:
cssnano-utils "^2.0.1"
postcss-value-parser "^4.1.0"
postcss-reduce-initial@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946"
integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==
postcss-reduce-initial@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz#fa424ce8aa88a89bc0b6d0f94871b24abe94c048"
integrity sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==
dependencies:
browserslist "^4.16.0"
browserslist "^4.16.6"
caniuse-api "^3.0.0"
postcss-reduce-transforms@^5.0.1:
@@ -7792,9 +7813,9 @@ postcss-unique-selectors@^5.0.2:
postcss-selector-parser "^6.0.5"
postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
"postcss@5 - 7":
version "7.0.39"
@@ -7850,12 +7871,12 @@ pretty-bytes@^5.6.0:
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
pretty-format@^27.3.1:
version "27.3.1"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5"
integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==
pretty-format@^27.4.2:
version "27.4.2"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8"
integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==
dependencies:
"@jest/types" "^27.2.5"
"@jest/types" "^27.4.2"
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
react-is "^17.0.1"
@@ -8505,12 +8526,13 @@ sass-loader@^12.3.0:
klona "^2.0.4"
neo-async "^2.6.2"
sass@^1.43.5:
version "1.43.5"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.5.tgz#25a9d91dd098793ef7229d7b04dd3daae2fc4a65"
integrity sha512-WuNm+eAryMgQluL7Mbq9M4EruyGGMyal7Lu58FfnRMVWxgUzIvI7aSn60iNt3kn5yZBMR7G84fAGDcwqOF5JOg==
sass@^1.44.0:
version "1.44.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb"
integrity sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
sax@>=0.6.0:
version "1.2.4"
@@ -9658,7 +9680,7 @@ tslib@^1.8.1, tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.3, tslib@^2.3.1:
tslib@^2.0.3:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
@@ -9781,11 +9803,6 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.5.2:
version "4.5.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998"
integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==
uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"