Skip to content

Commit ec40e16

Browse files
committed
refactor: Remove Critters (perhaps temporarily) (#1778)
* refactor: Remove Critters (perhaps temporarily) * docs: Adding changeset
1 parent 248c026 commit ec40e16

File tree

8 files changed

+35
-141
lines changed

8 files changed

+35
-141
lines changed

.changeset/few-panthers-admire.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'preact-cli': major
3+
---
4+
5+
Removes Critters which facilitates automatic CSS inlining in prod.
6+
7+
Unfortunately Critters has not been updated for Webpack v5, resulting in a precarious dependency situation that causes issues for NPM users. As such, Critters will be removed for the time being.
8+
9+
It may be updated or we may switch to a fork, but for now, it's causing issues and will require some work to correct.

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ $ [npm init / yarn create] preact-cli <template-name> <project-name>
121121

122122
Create a production build
123123

124-
You can disable `default: true` flags by prefixing them with `--no-<option>`; for example, `--no-sw`, `--no-prerender`, and `--no-inline-css`.
124+
You can disable `default: true` flags by prefixing them with `--no-<option>`; for example, `--no-sw` and `--no-prerender`.
125125

126126
```
127127
$ [npm run / yarn] preact build
@@ -134,7 +134,6 @@ $ [npm run / yarn] preact build
134134
--prerender Renders route(s) into generated static HTML (default true)
135135
--prerenderUrls Path to pre-rendered routes config (default prerender-urls.json)
136136
--template Path to custom EJS or HTML template (default 'src/template.ejs')
137-
--inlineCss Adds critical css to the prerendered markup (default true)
138137
--analyze Launch interactive Analyzer to inspect production bundle(s) (default false)
139138
-c, --config Path to custom CLI config (default preact.config.js)
140139
-v, --verbose Verbose output

packages/cli/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
"browserslist": "^4.20.3",
4949
"console-clear": "^1.0.0",
5050
"copy-webpack-plugin": "^9.1.0",
51-
"critters-webpack-plugin": "^3.0.2",
5251
"css-loader": "^6.6.0",
5352
"css-minimizer-webpack-plugin": "3.4.1",
5453
"dotenv": "^16.0.0",

packages/cli/src/index.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ prog
4242
'Path to prerendered routes config',
4343
'prerender-urls.json'
4444
)
45-
.option('--inlineCss', 'Adds critical CSS to the prerendered HTML', true)
4645
.option('-c, --config', 'Path to custom CLI config', 'preact.config.js')
4746
.option('-v, --verbose', 'Verbose output', false)
4847
.action(argv => exec(build(argv)));
@@ -81,9 +80,6 @@ prog
8180
.action(() => exec(info()));
8281

8382
prog.parse(process.argv, {
84-
alias: {
85-
inlineCss: ['inline-css'],
86-
},
8783
unknown: arg => {
8884
const cmd = process.argv[2];
8985
error(

packages/cli/src/lib/webpack/webpack-client-config.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const CopyWebpackPlugin = require('copy-webpack-plugin');
88
const TerserPlugin = require('terser-webpack-plugin');
99
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
1010
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
11-
const CrittersPlugin = require('critters-webpack-plugin');
1211
const renderHTMLPlugin = require('./render-html-plugin');
1312
const baseConfig = require('./webpack-base-config');
1413
const { InjectManifest } = require('workbox-webpack-plugin');
@@ -190,17 +189,6 @@ function prodBuild(config) {
190189
},
191190
};
192191

193-
if (config.inlineCss) {
194-
prodConfig.plugins.push(
195-
new CrittersPlugin({
196-
preload: 'media',
197-
pruneSource: false,
198-
logLevel: 'silent',
199-
additionalStylesheets: ['route-*.css'],
200-
})
201-
);
202-
}
203-
204192
if (config.analyze) {
205193
prodConfig.plugins.push(new BundleAnalyzerPlugin());
206194
}

packages/cli/tests/build.test.js

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -231,18 +231,6 @@ describe('preact build', () => {
231231
).toBeUndefined();
232232
});
233233

234-
it('--inlineCss', async () => {
235-
let dir = await subject('minimal');
236-
237-
await buildFast(dir, { inlineCss: true });
238-
let head = await getHead(dir);
239-
expect(head).toMatch('<style>h1{color:red}</style>');
240-
241-
await buildFast(dir, { inlineCss: false });
242-
head = await getOutputFile(dir, 'index.html');
243-
expect(head).not.toMatch(/<style>[^<]*<\/style>/);
244-
});
245-
246234
it('--config', async () => {
247235
let dir = await subject('custom-webpack');
248236

@@ -296,16 +284,6 @@ describe('preact build', () => {
296284
expect(builtStylesheet).toMatch(/\.text__\w{5}{color:blue}/);
297285
});
298286

299-
it('should inline critical CSS only', async () => {
300-
let dir = await subject('css-inline');
301-
await buildFast(dir);
302-
const builtStylesheet = await getOutputFile(dir, /bundle\.\w{5}\.css$/);
303-
const html = await getOutputFile(dir, 'index.html');
304-
305-
expect(builtStylesheet).toMatch('h1{color:red}div{background:tan}');
306-
expect(html).toMatch('<style>h1{color:red}</style>');
307-
});
308-
309287
// Issue #1411
310288
it('should preserve side-effectful CSS imports even if package.json claims no side effects', async () => {
311289
let dir = await subject('css-side-effect');

packages/cli/tests/images/build.js

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ exports.default = {
2626
'es-polyfills.js': 46419,
2727

2828
'favicon.ico': 15086,
29-
'index.html': 3998,
29+
'index.html': 1972,
3030
'manifest.json': 455,
3131
'preact_prerender_data.json': 11,
3232

@@ -55,11 +55,7 @@ exports.prerender.heads.home = `
5555
<meta name="apple-mobile-web-app-capable" content="yes">
5656
<link rel="apple-touch-icon" href=\\"\\/assets\\/icons\\/apple-touch-icon\\.png\\">
5757
<link rel="manifest" href="\\/manifest\\.json">
58-
<style>html{padding:0}<\\/style>
59-
<link href=\\"/bundle.\\w{5}.css\\" rel=\\"stylesheet\\" media=\\"print\\" onload=\\"this.media='all'\\">
60-
<noscript>
61-
<link rel=\\"stylesheet\\" href=\\"\\/bundle.\\w{5}.css\\">
62-
</noscript>
58+
<link href=\\"/bundle.\\w{5}.css\\" rel=\\"stylesheet\\">
6359
<\\/head>
6460
`;
6561

@@ -72,11 +68,7 @@ exports.prerender.heads.route66 = `
7268
<meta name="apple-mobile-web-app-capable" content="yes">
7369
<link rel="apple-touch-icon" href=\\"\\/assets\\/icons\\/apple-touch-icon\\.png\\">
7470
<link rel="manifest" href="\\/manifest\\.json">
75-
<style>html{padding:0}<\\/style>
76-
<link href=\\"/bundle.\\w{5}.css\\" rel=\\"stylesheet\\" media=\\"print\\" onload=\\"this.media='all'\\">
77-
<noscript>
78-
<link rel=\\"stylesheet\\" href=\\"\\/bundle.\\w{5}.css\\">
79-
</noscript>
71+
<link href=\\"/bundle.\\w{5}.css\\" rel=\\"stylesheet\\">
8072
<\\/head>
8173
`;
8274

@@ -89,11 +81,7 @@ exports.prerender.heads.custom = `
8981
<meta name="apple-mobile-web-app-capable" content="yes">
9082
<link rel="apple-touch-icon" href=\\"\\/assets\\/icons\\/apple-touch-icon\\.png\\">
9183
<link rel="manifest" href="\\/manifest\\.json">
92-
<style>html{padding:0}<\\/style>
93-
<link href=\\"/bundle.\\w{5}.css\\" rel=\\"stylesheet\\" media=\\"print\\" onload=\\"this.media='all'\\">
94-
<noscript>
95-
<link rel=\\"stylesheet\\" href=\\"\\/bundle.\\w{5}.css\\">
96-
</noscript>
84+
<link href=\\"/bundle.\\w{5}.css\\" rel=\\"stylesheet\\">
9785
<\\/head>
9886
`;
9987

@@ -143,7 +131,7 @@ exports.prerender.htmlSafe = `
143131
`;
144132

145133
exports.template = `
146-
<!DOCTYPE html>
134+
<!doctype html>
147135
<html lang="en">
148136
<head>
149137
<meta charset="utf-8">
@@ -159,7 +147,7 @@ exports.template = `
159147
`;
160148

161149
exports.publicPath = `
162-
<!DOCTYPE html>
150+
<!doctype html>
163151
<html lang="en">
164152
<head>
165153
<meta charset="utf-8">
@@ -182,9 +170,9 @@ exports.publicPath = `
182170
<h1>Public path test</h1>
183171
<script type="__PREACT_CLI_DATA__">%7B%22prerenderData%22:%7B%22url%22:%22/%22%7D%7D</script>
184172
<script type="module" src="/example-path/bundle.\\w{5}.js"></script>
185-
<script nomodule="" src="/example-path/dom-polyfills.\\w{5}.js"></script>
186-
<script nomodule="" src="/example-path/es-polyfills.js"></script>
187-
<script nomodule="" defer="defer" src="/example-path/bundle.\\w{5}.legacy.js"></script>
173+
<script nomodule src="/example-path/dom-polyfills.\\w{5}.js"></script>
174+
<script nomodule src="/example-path/es-polyfills.js"></script>
175+
<script nomodule defer="defer" src="/example-path/bundle.\\w{5}.legacy.js"></script>
188176
</body>
189177
</html>
190178
`;

yarn.lock

Lines changed: 16 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -3750,28 +3750,6 @@ create-error-class@^3.0.0:
37503750
dependencies:
37513751
capture-stack-trace "^1.0.0"
37523752

3753-
critters-webpack-plugin@^3.0.2:
3754-
version "3.0.2"
3755-
resolved "https://registry.yarnpkg.com/critters-webpack-plugin/-/critters-webpack-plugin-3.0.2.tgz#12cbd90310ea6a6050d73e49f27fe2e623e4a90d"
3756-
integrity sha512-WdGtrjfzTGTuLL1qR9yIrPvrF+r4Fq5MsI+hfjuujLRVzh5UOl1TPCdX4kJU12iK5LFHtbNtezcAJCaXpvozHA==
3757-
dependencies:
3758-
critters "^0.0.16"
3759-
minimatch "^3.0.4"
3760-
webpack-log "^3.0.1"
3761-
webpack-sources "^1.3.0"
3762-
3763-
critters@^0.0.16:
3764-
version "0.0.16"
3765-
resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.16.tgz#ffa2c5561a65b43c53b940036237ce72dcebfe93"
3766-
integrity sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==
3767-
dependencies:
3768-
chalk "^4.1.0"
3769-
css-select "^4.2.0"
3770-
parse5 "^6.0.1"
3771-
parse5-htmlparser2-tree-adapter "^6.0.1"
3772-
postcss "^8.3.7"
3773-
pretty-bytes "^5.3.0"
3774-
37753753
37763754
version "3.1.5"
37773755
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
@@ -3856,7 +3834,7 @@ [email protected]:
38563834
serialize-javascript "^6.0.0"
38573835
source-map "^0.6.1"
38583836

3859-
css-select@^4.1.3, css-select@^4.2.0:
3837+
css-select@^4.1.3:
38603838
version "4.2.1"
38613839
resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
38623840
integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
@@ -7671,11 +7649,6 @@ log-update@^4.0.0:
76717649
slice-ansi "^4.0.0"
76727650
wrap-ansi "^6.2.0"
76737651

7674-
loglevelnext@^3.0.1:
7675-
version "3.0.1"
7676-
resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-3.0.1.tgz#e3e4659c4061c09264f6812c33586dc55a009a04"
7677-
integrity sha512-JpjaJhIN1reaSb26SIxDGtE0uc67gPl19OMVHrr+Ggt6b/Vy60jmCtKgQBrygAH0bhRA2nkxgDvM+8QvR8r0YA==
7678-
76797652
loose-envify@^1.0.0, loose-envify@^1.4.0:
76807653
version "1.4.0"
76817654
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -8118,16 +8091,6 @@ nan@^2.12.1:
81188091
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
81198092
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
81208093

8121-
nanoid@^2.0.3:
8122-
version "2.1.11"
8123-
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
8124-
integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
8125-
8126-
nanoid@^3.1.30:
8127-
version "3.1.30"
8128-
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
8129-
integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
8130-
81318094
nanoid@^3.3.3:
81328095
version "3.3.4"
81338096
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
@@ -9043,13 +9006,6 @@ parse-node-version@^1.0.1:
90439006
resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
90449007
integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
90459008

9046-
parse5-htmlparser2-tree-adapter@^6.0.1:
9047-
version "6.0.1"
9048-
resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
9049-
integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
9050-
dependencies:
9051-
parse5 "^6.0.1"
9052-
90539009
90549010
version "4.0.0"
90559011
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
@@ -9060,11 +9016,6 @@ parse5@^1.5.1:
90609016
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
90619017
integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=
90629018

9063-
parse5@^6.0.1:
9064-
version "6.0.1"
9065-
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
9066-
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
9067-
90689019
parseurl@~1.3.2, parseurl@~1.3.3:
90699020
version "1.3.3"
90709021
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -9494,24 +9445,15 @@ postcss-value-parser@^4.2.0:
94949445
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
94959446
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
94969447

9497-
postcss@^8.3.5, postcss@^8.4.21:
9498-
version "8.4.31"
9499-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
9500-
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
9448+
postcss@^8.3.5:
9449+
version "8.4.6"
9450+
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1"
9451+
integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==
95019452
dependencies:
9502-
nanoid "^3.3.6"
9453+
nanoid "^3.2.0"
95039454
picocolors "^1.0.0"
95049455
source-map-js "^1.0.2"
95059456

9506-
postcss@^8.3.7:
9507-
version "8.3.11"
9508-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858"
9509-
integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==
9510-
dependencies:
9511-
nanoid "^3.1.30"
9512-
picocolors "^1.0.0"
9513-
source-map-js "^0.6.2"
9514-
95159457
postcss@^8.4.13:
95169458
version "8.4.13"
95179459
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575"
@@ -9521,6 +9463,15 @@ postcss@^8.4.13:
95219463
picocolors "^1.0.0"
95229464
source-map-js "^1.0.2"
95239465

9466+
postcss@^8.4.21:
9467+
version "8.4.31"
9468+
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
9469+
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
9470+
dependencies:
9471+
nanoid "^3.3.6"
9472+
picocolors "^1.0.0"
9473+
source-map-js "^1.0.2"
9474+
95249475
preact-render-to-string@^5.2.6:
95259476
version "5.2.6"
95269477
resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz#0ff0c86cd118d30affb825193f18e92bd59d0604"
@@ -10843,11 +10794,6 @@ source-list-map@^2.0.0:
1084310794
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1084410795
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1084510796

10846-
source-map-js@^0.6.2:
10847-
version "0.6.2"
10848-
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
10849-
integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
10850-
1085110797
source-map-loader@^1.1.1:
1085210798
version "1.1.3"
1085310799
resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.3.tgz#7dbc2fe7ea09d3e43c51fd9fc478b7f016c1f820"
@@ -12119,15 +12065,6 @@ webpack-dev-server@^4.9.0:
1211912065
webpack-dev-middleware "^5.3.1"
1212012066
ws "^8.4.2"
1212112067

12122-
webpack-log@^3.0.1:
12123-
version "3.0.2"
12124-
resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-3.0.2.tgz#edf64fe4cabffeb04a03ca44d89f9908a4a9d238"
12125-
integrity sha512-ijm2zgqTY2omtlxRNrtDqxAQOrfAGMxWg9fQB/kuFSeZjx/OkYnfYLqsjf/JkrWOHINMzqxaJDXaog6Mx9KaHg==
12126-
dependencies:
12127-
chalk "^2.4.2"
12128-
loglevelnext "^3.0.1"
12129-
nanoid "^2.0.3"
12130-
1213112068
webpack-merge@^5.8.0:
1213212069
version "5.8.0"
1213312070
resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
@@ -12143,7 +12080,7 @@ webpack-remove-empty-scripts@^0.7.2:
1214312080
dependencies:
1214412081
ansis "^1.3.4"
1214512082

12146-
webpack-sources@^1.3.0, webpack-sources@^1.4.3:
12083+
webpack-sources@^1.4.3:
1214712084
version "1.4.3"
1214812085
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
1214912086
integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==

0 commit comments

Comments
 (0)