Skip to content

Commit b588bea

Browse files
perf(webpack): optimise images, SVGs
1 parent e494f76 commit b588bea

File tree

3 files changed

+211
-1
lines changed

3 files changed

+211
-1
lines changed

client/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
"fork-ts-checker-webpack-plugin": "^9.0.2",
175175
"glob": "^10.3.7",
176176
"html-webpack-plugin": "^5.6.0",
177+
"image-minimizer-webpack-plugin": "^4.1.3",
177178
"jest": "^29.7.0",
178179
"jest-canvas-mock": "^2.5.2",
179180
"jest-environment-jsdom": "^29.7.0",
@@ -188,7 +189,9 @@
188189
"redux-logger": "^3.0.6",
189190
"sass": "^1.76.0",
190191
"sass-loader": "^14.1.0",
192+
"sharp": "^0.34.1",
191193
"style-loader": "^3.3.4",
194+
"svgo": "^3.3.2",
192195
"tailwindcss": "^3.4.1",
193196
"terser-webpack-plugin": "^5.3.10",
194197
"ts-jest": "^29.1.2",

client/webpack.prod.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const { merge } = require('webpack-merge');
22
const TerserPlugin = require('terser-webpack-plugin');
33
const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin');
4+
const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin');
45

56
const common = require('./webpack.common');
67

@@ -46,5 +47,25 @@ module.exports = merge(common, {
4647
},
4748
plugins: [
4849
new MomentTimezoneDataPlugin({ startYear: 2014 }),
50+
new ImageMinimizerPlugin({
51+
test: /\.(jpe?g|png|gif)$/i,
52+
minimizer: {
53+
implementation: ImageMinimizerPlugin.sharpMinify,
54+
options: {
55+
encodeOptions: {
56+
png: {
57+
quality: 90,
58+
compressionLevel: 9,
59+
},
60+
},
61+
},
62+
},
63+
}),
64+
new ImageMinimizerPlugin({
65+
test: /\.svg$/i,
66+
minimizer: {
67+
implementation: ImageMinimizerPlugin.svgoMinify,
68+
},
69+
}),
4970
],
5071
});

client/yarn.lock

Lines changed: 187 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,13 @@
11781178
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
11791179
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
11801180

1181+
"@emnapi/runtime@^1.4.0":
1182+
version "1.4.3"
1183+
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d"
1184+
integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==
1185+
dependencies:
1186+
tslib "^2.4.0"
1187+
11811188
"@emotion/babel-plugin@^11.11.0":
11821189
version "11.11.0"
11831190
resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c"
@@ -1474,6 +1481,124 @@
14741481
resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
14751482
integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==
14761483

1484+
"@img/sharp-darwin-arm64@0.34.1":
1485+
version "0.34.1"
1486+
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz#e79a4756bea9a06a7aadb4391ee53cb154a4968c"
1487+
integrity sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==
1488+
optionalDependencies:
1489+
"@img/sharp-libvips-darwin-arm64" "1.1.0"
1490+
1491+
"@img/sharp-darwin-x64@0.34.1":
1492+
version "0.34.1"
1493+
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz#f1f1d386719f6933796415d84937502b7199a744"
1494+
integrity sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==
1495+
optionalDependencies:
1496+
"@img/sharp-libvips-darwin-x64" "1.1.0"
1497+
1498+
"@img/sharp-libvips-darwin-arm64@1.1.0":
1499+
version "1.1.0"
1500+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz#843f7c09c7245dc0d3cfec2b3c83bb08799a704f"
1501+
integrity sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==
1502+
1503+
"@img/sharp-libvips-darwin-x64@1.1.0":
1504+
version "1.1.0"
1505+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz#1239c24426c06a8e833815562f78047a3bfbaaf8"
1506+
integrity sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==
1507+
1508+
"@img/sharp-libvips-linux-arm64@1.1.0":
1509+
version "1.1.0"
1510+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz#20d276cefd903ee483f0441ba35961679c286315"
1511+
integrity sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==
1512+
1513+
"@img/sharp-libvips-linux-arm@1.1.0":
1514+
version "1.1.0"
1515+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz#067c0b566eae8063738cf1b1db8f8a8573b5465c"
1516+
integrity sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==
1517+
1518+
"@img/sharp-libvips-linux-ppc64@1.1.0":
1519+
version "1.1.0"
1520+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz#682334595f2ca00e0a07a675ba170af165162802"
1521+
integrity sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==
1522+
1523+
"@img/sharp-libvips-linux-s390x@1.1.0":
1524+
version "1.1.0"
1525+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz#82fcd68444b3666384235279c145c2b28d8ee302"
1526+
integrity sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==
1527+
1528+
"@img/sharp-libvips-linux-x64@1.1.0":
1529+
version "1.1.0"
1530+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz#65b2b908bf47156b0724fde9095676c83a18cf5a"
1531+
integrity sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==
1532+
1533+
"@img/sharp-libvips-linuxmusl-arm64@1.1.0":
1534+
version "1.1.0"
1535+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz#72accf924e80b081c8db83b900b444a67c203f01"
1536+
integrity sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==
1537+
1538+
"@img/sharp-libvips-linuxmusl-x64@1.1.0":
1539+
version "1.1.0"
1540+
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz#1fa052737e203f46bf44192acd01f9faf11522d7"
1541+
integrity sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==
1542+
1543+
"@img/sharp-linux-arm64@0.34.1":
1544+
version "0.34.1"
1545+
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz#c36ef964499b8cfc2d2ed88fe68f27ce41522c80"
1546+
integrity sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==
1547+
optionalDependencies:
1548+
"@img/sharp-libvips-linux-arm64" "1.1.0"
1549+
1550+
"@img/sharp-linux-arm@0.34.1":
1551+
version "0.34.1"
1552+
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz#c96e38ff028d645912bb0aa132a7178b96997866"
1553+
integrity sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==
1554+
optionalDependencies:
1555+
"@img/sharp-libvips-linux-arm" "1.1.0"
1556+
1557+
"@img/sharp-linux-s390x@0.34.1":
1558+
version "0.34.1"
1559+
resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz#8ac58d9a49dcb08215e76c8d450717979b7815c3"
1560+
integrity sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==
1561+
optionalDependencies:
1562+
"@img/sharp-libvips-linux-s390x" "1.1.0"
1563+
1564+
"@img/sharp-linux-x64@0.34.1":
1565+
version "0.34.1"
1566+
resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz#3d8652efac635f0dba39d5e3b8b49515a2b2dee1"
1567+
integrity sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==
1568+
optionalDependencies:
1569+
"@img/sharp-libvips-linux-x64" "1.1.0"
1570+
1571+
"@img/sharp-linuxmusl-arm64@0.34.1":
1572+
version "0.34.1"
1573+
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz#b267e6a3e06f9e4d345cde471e5480c5c39e6969"
1574+
integrity sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==
1575+
optionalDependencies:
1576+
"@img/sharp-libvips-linuxmusl-arm64" "1.1.0"
1577+
1578+
"@img/sharp-linuxmusl-x64@0.34.1":
1579+
version "0.34.1"
1580+
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz#a8dee4b6227f348c4bbacaa6ac3dc584a1a80391"
1581+
integrity sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==
1582+
optionalDependencies:
1583+
"@img/sharp-libvips-linuxmusl-x64" "1.1.0"
1584+
1585+
"@img/sharp-wasm32@0.34.1":
1586+
version "0.34.1"
1587+
resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz#f7dfd66b6c231269042d3d8750c90f28b9ddcba1"
1588+
integrity sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==
1589+
dependencies:
1590+
"@emnapi/runtime" "^1.4.0"
1591+
1592+
"@img/sharp-win32-ia32@0.34.1":
1593+
version "0.34.1"
1594+
resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz#4bc293705df76a5f0a02df66ca3dc12e88f61332"
1595+
integrity sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==
1596+
1597+
"@img/sharp-win32-x64@0.34.1":
1598+
version "0.34.1"
1599+
resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz#8a7922fec949f037c204c79f6b83238d2482384b"
1600+
integrity sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==
1601+
14771602
"@isaacs/cliui@^8.0.2":
14781603
version "8.0.2"
14791604
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
@@ -4649,6 +4774,11 @@ detect-libc@^2.0.0, detect-libc@^2.0.2:
46494774
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
46504775
integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
46514776

4777+
detect-libc@^2.0.3:
4778+
version "2.0.3"
4779+
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
4780+
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
4781+
46524782
detect-newline@^3.0.0:
46534783
version "3.1.0"
46544784
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
@@ -6342,6 +6472,14 @@ ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4:
63426472
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
63436473
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
63446474

6475+
image-minimizer-webpack-plugin@^4.1.3:
6476+
version "4.1.3"
6477+
resolved "https://registry.yarnpkg.com/image-minimizer-webpack-plugin/-/image-minimizer-webpack-plugin-4.1.3.tgz#728e89d153978f49396fe1881aa11fe6cef57f83"
6478+
integrity sha512-yJvYlLAZosu2iqlGF81BEUHfUiWRPD05krtoax9Ffst3Yzbn3X7p04VXambwlx3uhbSwH/BeyM5+bJHQksnuyw==
6479+
dependencies:
6480+
schema-utils "^4.2.0"
6481+
serialize-javascript "^6.0.2"
6482+
63456483
immer@^10.0.4:
63466484
version "10.0.4"
63476485
resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.4.tgz#09af41477236b99449f9d705369a4daaf780362b"
@@ -10119,6 +10257,11 @@ semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4:
1011910257
dependencies:
1012010258
lru-cache "^6.0.0"
1012110259

10260+
semver@^7.7.1:
10261+
version "7.7.1"
10262+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
10263+
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
10264+
1012210265
send@0.19.0:
1012310266
version "0.19.0"
1012410267
resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
@@ -10138,7 +10281,7 @@ send@0.19.0:
1013810281
range-parser "~1.2.1"
1013910282
statuses "2.0.1"
1014010283

10141-
serialize-javascript@^6.0.1:
10284+
serialize-javascript@^6.0.1, serialize-javascript@^6.0.2:
1014210285
version "6.0.2"
1014310286
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
1014410287
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
@@ -10240,6 +10383,36 @@ sharp@^0.32.4:
1024010383
tar-fs "^3.0.4"
1024110384
tunnel-agent "^0.6.0"
1024210385

10386+
sharp@^0.34.1:
10387+
version "0.34.1"
10388+
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.1.tgz#e5922894b0cc7ddf159eeabc6d5668e4e8b11d61"
10389+
integrity sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==
10390+
dependencies:
10391+
color "^4.2.3"
10392+
detect-libc "^2.0.3"
10393+
semver "^7.7.1"
10394+
optionalDependencies:
10395+
"@img/sharp-darwin-arm64" "0.34.1"
10396+
"@img/sharp-darwin-x64" "0.34.1"
10397+
"@img/sharp-libvips-darwin-arm64" "1.1.0"
10398+
"@img/sharp-libvips-darwin-x64" "1.1.0"
10399+
"@img/sharp-libvips-linux-arm" "1.1.0"
10400+
"@img/sharp-libvips-linux-arm64" "1.1.0"
10401+
"@img/sharp-libvips-linux-ppc64" "1.1.0"
10402+
"@img/sharp-libvips-linux-s390x" "1.1.0"
10403+
"@img/sharp-libvips-linux-x64" "1.1.0"
10404+
"@img/sharp-libvips-linuxmusl-arm64" "1.1.0"
10405+
"@img/sharp-libvips-linuxmusl-x64" "1.1.0"
10406+
"@img/sharp-linux-arm" "0.34.1"
10407+
"@img/sharp-linux-arm64" "0.34.1"
10408+
"@img/sharp-linux-s390x" "0.34.1"
10409+
"@img/sharp-linux-x64" "0.34.1"
10410+
"@img/sharp-linuxmusl-arm64" "0.34.1"
10411+
"@img/sharp-linuxmusl-x64" "0.34.1"
10412+
"@img/sharp-wasm32" "0.34.1"
10413+
"@img/sharp-win32-ia32" "0.34.1"
10414+
"@img/sharp-win32-x64" "0.34.1"
10415+
1024310416
shebang-command@^2.0.0:
1024410417
version "2.0.0"
1024510418
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -10677,6 +10850,19 @@ svgo@^3.0.2, svgo@^3.2.0:
1067710850
csso "^5.0.5"
1067810851
picocolors "^1.0.0"
1067910852

10853+
svgo@^3.3.2:
10854+
version "3.3.2"
10855+
resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8"
10856+
integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==
10857+
dependencies:
10858+
"@trysound/sax" "0.2.0"
10859+
commander "^7.2.0"
10860+
css-select "^5.1.0"
10861+
css-tree "^2.3.1"
10862+
css-what "^6.1.0"
10863+
csso "^5.0.5"
10864+
picocolors "^1.0.0"
10865+
1068010866
symbol-tree@^3.2.4:
1068110867
version "3.2.4"
1068210868
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"

0 commit comments

Comments
 (0)