From fc514b3e3dd15d6fd77ce5a1b7d481c53d99f229 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Sat, 4 Dec 2021 16:13:12 +0100 Subject: [PATCH 01/28] Update readme --- README.md | 110 +++++++++++++++++++++++++++++++----------------- docs/avito.png | Bin 3248 -> 0 bytes docs/avito.svg | 1 - docs/yandex.png | Bin 2524 -> 0 bytes docs/yandex.svg | 1 - 5 files changed, 72 insertions(+), 40 deletions(-) delete mode 100644 docs/avito.png delete mode 100644 docs/avito.svg delete mode 100644 docs/yandex.png delete mode 100644 docs/yandex.svg diff --git a/README.md b/README.md index 5e037b8c..d8207893 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,7 @@ [![NPM Downloads](https://img.shields.io/npm/dm/csso.svg)](https://www.npmjs.com/package/csso) [![Twitter](https://img.shields.io/badge/Twitter-@cssoptimizer-blue.svg)](https://twitter.com/cssoptimizer) -CSSO (CSS Optimizer) is a CSS minifier. It performs three sort of transformations: cleaning (removing redundant), compression (replacement for shorter form) and restructuring (merge of declarations, rulesets and so on). As a result your CSS becomes much smaller. - -[![Originated by Yandex](https://cdn.rawgit.com/css/csso/8d1b89211ac425909f735e7d5df87ee16c2feec6/docs/yandex.svg)](https://www.yandex.com/) -[![Sponsored by Avito](https://cdn.rawgit.com/css/csso/8d1b89211ac425909f735e7d5df87ee16c2feec6/docs/avito.svg)](https://www.avito.ru/) +CSSO (CSS Optimizer) is a CSS minifier. It performs three sort of transformations: cleaning (removing redundants), compression (replacement for the shorter forms) and restructuring (merge of declarations, rules and so on). As a result an output CSS becomes much smaller in size. ## Ready to use @@ -30,52 +27,88 @@ CSSO (CSS Optimizer) is a CSS minifier. It performs three sort of transformation npm install csso ``` -## API - - - -- [minify(source[, options])](#minifysource-options) -- [minifyBlock(source[, options])](#minifyblocksource-options) -- [syntax.compress(ast[, options])](#syntaxcompressast-options) -- [Source maps](#source-maps) -- [Usage data](#usage-data) - - [White list filtering](#white-list-filtering) - - [Black list filtering](#black-list-filtering) - - [Scopes](#scopes) - - +## Usage Basic usage: ```js -var csso = require('csso'); +import { minify } from 'csso'; -var minifiedCss = csso.minify('.test { color: #ff0000; }').css; +const minifiedCss = minify('.test { color: #ff0000; }').css; console.log(minifiedCss); // .test{color:red} ``` -CSSO is based on [CSSTree](https://github.com/csstree/csstree) to parse CSS into AST, AST traversal and to generate AST back to CSS. All `CSSTree` API is available behind `syntax` field. You may minify CSS step by step: +There are bundles are available for using in a browser: + +- `dist/csso.js` – minified IIFE with `csso` as global +```html + + +``` + +- `dist/csso.esm.js` – minified ES module +```html + +``` + +One of CDN services like `unpkg` or `jsDelivr` can be used. By default (for short path) a ESM version is exposing. For IIFE version a full path to a bundle should be specified: + +```html + + + + + + +``` + +CSSO is based on [CSSTree](https://github.com/csstree/csstree) to parse CSS into AST, AST traversal and to generate AST back to CSS. All `CSSTree` API is available behind `syntax` field extended with `compress()` method. You may minify CSS step by step: ```js -var csso = require('csso'); -var ast = csso.syntax.parse('.test { color: #ff0000; }'); -var compressedAst = csso.syntax.compress(ast).ast; -var minifiedCss = csso.syntax.generate(compressedAst); +import { syntax } from 'csso'; + +const ast = syntax.parse('.test { color: #ff0000; }'); +const compressedAst = syntax.compress(ast).ast; +const minifiedCss = syntax.generate(compressedAst); console.log(minifiedCss); // .test{color:red} ``` -> Warning: CSSO uses early versions of CSSTree that still in active development. CSSO doesn't guarantee API behind `syntax` field or AST format will not change in future releases of CSSO, since it's subject to change in CSSTree. Be careful with CSSO updates if you use `syntax` API until this warning removal. +> Warning: CSSO doesn't guarantee API behind a `syntax` field as well as AST format. Both might be changed with changes in CSSTree. If you rely heavily on `syntax` API, a better option might be to use CSSTree directly. + +## API + + + +- [minify(source[, options])](#minifysource-options) +- [minifyBlock(source[, options])](#minifyblocksource-options) +- [syntax.compress(ast[, options])](#syntaxcompressast-options) +- [Source maps](#source-maps) +- [Usage data](#usage-data) + - [White list filtering](#white-list-filtering) + - [Black list filtering](#black-list-filtering) + - [Scopes](#scopes) + + ### minify(source[, options]) Minify `source` CSS passed as `String`. ```js -var result = csso.minify('.test { color: #ff0000; }', { +const result = csso.minify('.test { color: #ff0000; }', { restructure: false, // don't change CSS structure, i.e. don't merge declarations, rulesets etc debug: true // show additional debug information: // true or number from 1 to 3 (greater number - more details) @@ -134,7 +167,7 @@ Options: The same as `minify()` but for list of declarations. Usually it's a `style` attribute value. ```js -var result = csso.minifyBlock('color: rgba(255, 0, 0, 1); color: #ff0000'); +const result = csso.minifyBlock('color: rgba(255, 0, 0, 1); color: #ff0000'); console.log(result.css); // > color:red @@ -203,9 +236,9 @@ Options: To get a source map set `true` for `sourceMap` option. Additianaly `filename` option can be passed to specify source file. When `sourceMap` option is `true`, `map` field of result object will contain a [`SourceMapGenerator`](https://github.com/mozilla/source-map#sourcemapgenerator) instance. This object can be mixed with another source map or translated to string. ```js -var csso = require('csso'); -var css = fs.readFileSync('path/to/my.css', 'utf8'); -var result = csso.minify(css, { +const csso = require('csso'); +const css = fs.readFileSync('path/to/my.css', 'utf8'); +const result = csso.minify(css, { filename: 'path/to/my.css', // will be added to source map as reference to source file sourceMap: true // generate source map }); @@ -220,12 +253,13 @@ console.log(result.map.toString()); Example of generating source map with respect of source map from input CSS: ```js -var require('source-map'); -var csso = require('csso'); -var inputFile = 'path/to/my.css'; -var input = fs.readFileSync(inputFile, 'utf8'); -var inputMap = input.match(/\/\*# sourceMappingURL=(\S+)\s*\*\/\s*$/); -var output = csso.minify(input, { +import { SourceMapConsumer } from 'source-map'; +import * as csso from 'csso'; + +const inputFile = 'path/to/my.css'; +const input = fs.readFileSync(inputFile, 'utf8'); +const inputMap = input.match(/\/\*# sourceMappingURL=(\S+)\s*\*\/\s*$/); +const output = csso.minify(input, { filename: inputFile, sourceMap: true }); @@ -242,7 +276,7 @@ if (inputMap) { console.log( output.css + '/*# sourceMappingURL=data:application/json;base64,' + - new Buffer(output.map.toString()).toString('base64') + + Buffer.from(output.map.toString()).toString('base64') + ' */' ); ``` diff --git a/docs/avito.png b/docs/avito.png deleted file mode 100644 index 9c25a73fb556b6b6a24f60c18efbcb0b3b243640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3248 zcmV;h3{UfkP)Px>YDq*vRCodHTM2NKMHYSuIS5Gr0|>-$NhAc&MGz=J1O&wcQ4uUyQ51^B5*A@8 z3Y0}yp$e2;v`htv2!_jJ1?8yauvUqRD-hIFg4_v2Sc2im9dq}-uS56r{PRy{5+;_Z z&8wQ}?sxRxf4{%4_g?!62C4@*cI+7K*|SI1JbChDYTLFgZP>7Ze*XDqy5*Kz=<&xN zr_P-_OFHoR`T5kmd2^aFWs1fH1O(9d@#E>$S6`*K-g-;o-+%vo%FD}h;!RFYrf<4zx`I?&YnF>xw*MCd-iPE`6w&i@4owvu3fuEm6eqehrhJ6 zG<;x1KQ^-91^wX4;l||Xv*%Ci;#u3wzJ2uIgAZ!n z`pDFqk{){KA=!xu2?^xy?|2MG*WSH*sek|e@_jIZLPA1h9w|nNg296a(~ccGR8gic zz4Q`o+_+IHOVwLgSV&EqHkI`h6clLw^XJdgn{U1;KMIZH%&uL#=-|PFCQ9a8v}i$> zE?siL1A&o)k4&`{vq6s@J?O-V6EtYhAX^z<)?2k=pdgeLfXD3gii!&Q{`>D~(V|6idi(X)UnOgsHf`i|X_d!x z3SNBiCSY`9L|XwPrAwDCRP<HK)wgt5?$-Z@i)TN=r-W_19mgyYIeRu9uo%WFUj}^v*l) zG_b!-)~~)c4ro562Q22^02XjHeR<-ys3h&r4xSd?X0)y?)U!U4XJ&N zN@@VwYE)9Ak{Un{G=L^Hj-&>lq-uMOn}+UT3rRvcn_}1q00UoabD}AoiN-~_5oko$ zOApv?!3!&h{`@0R;(7aLLP-gIi6VmR=>$taY8vtBkNAX2)IEmS>gk5L5$&l5Y?btU zGSSBKHH$tL$u_XTHaw?J5v^NKbp5(BariKzi4$NpaK<;5JobRgnzWavI8O>ft-IL{ zxs?Zs6XfI&#l^cS2uuf(h<5CBVs9*X*8?s}TFq;aw-8_LRdBHH+D&X+bCj*Qee6bH zt9M-iKBCCTNcp?#uDi6WqOSGX$$j+EN7DEUV=AoWzXxzp(vLhCyoHop3uk(U1z{<& zeU8qZvmm`MZrQR$`gCBehF|H6FTU_z*bB}J7cLO2-SBChJb98POqf7duU_>+vVK`y z7Kl>rM{l8=w|v<3X%p%V*FlZ)#ntYG8hP9hp(GPfe&B%zOw>)~PoF+b<>lqN4!A-v zdRw<{t#L<>9+mDAg_t^Zs&;BBoUc=tk<>NJ`$u#MH53G~P8~f9*KwBzpA@{kCVcwo zr_yy{;%+8?&pr1z`LjB9?C9c}*u8r~f=3pvb6)}cT5u2|<^dkyq@*P6v+~t5>Qax3l4h~P^bajP zSA`L`FxJA?y*tsE$LtlwfhhF+^A-W`ikN~v{`g~CX6qDa%Tx^ zKEm$mpddE_HKQ@bAb3PUU|^tLJK*KLc<~~&Yu8Sa;R(hlPymnb(4j+BQKwKmyuNC> z8aHkn&6+ifrcIkhr*PI|KqSyR@4O>j^$Qm+l(@{yOzEMO1^z>PgXw8rzI-_$Hp7I( z#6+ohtY=UZJj??J4wTQsb3Fn)vv!bQF2tXX3K6oM-K+ns{snClV$xwDu9n(K)E|z+ zy0AZyKlbzr?g(85e$}c~`r#Z0Avj7%)1P_f8BH@YyuH>usDr0AN$%69kH)idC63oV zjZ^J#m+suTQ$L139>K2t8fEcrSFT*qGIklbxNC&s3L#Q+g-GFF0V~cMs1g+-yEsjp z%lo&uSnwZFRG#gPm@N;-CkT!N(l5$^EP~@41jp!U96Hv7xpU`g8pqcO4rVdQGH)uL zHwc2KAc^;tl6Zs)j_uIxaHmw@c{BY{2#-oqjNYWBl?CF^rIlhsT0gPo$8P$! zHYG;vIP*vG-vS|_h zDJiEUU2Hu*LMz5pl9^A=inF$%#xkZH^%Zi&sL095k^EnN`K88#ju$t9BT_Y;0~t+{ zuqxhEu$_`j;n!Y!P1lR(Dy5h_9AGIps7CYg+9o*2(_|5RAQxS`cGWx_&nJqCikx^< z!DV;H53V(oROZmX(x*~>DQ^@!z|qTblzJu616MT}Ayj6}-00Dxsb$ORttU1E2nSQJ zb?a7qaH>epKKrcBvqGJM9?k7MD@DczYGxl~5L#yL;1F)cBgd&`Y;@w{;xrBi=dZrv z&6W*#R8mzbQNhV7DmY$6m2Qj$hc5k{3d-2x>Lnb``Ue%3d*-)xJVJ|M6~GUsn-L>M z=qJLYW4<7mjI_!fFK9Iat#hc31mEB|p&rpCkLmZOr03Vte#%9Wy{52}6C_~VR zrKOY}Uq<;#D2<7NP%&sH!acFW4jh_~fd7FkAoxe2D6iFd1{;!HthISvIWAtroQnF@RP<_}_Fd;6{ZCum=xDqN(`0Om*te ztey$ekrgn4O}-g3X6RcaiWlqF{Q2`$k-By3Mt%FTyW0j_tl)}ARJtli(~OTt2#3NH z-K*4CEz??Z9U!D+XC_9kO5#?!!;EE)&pFVQFWQFjj*sVNt2AV z_)`}Rln4|J_XgU43j?q?;NB8$lc>8+d{~t+>aavW9#?G4_rbcfe*Jp4A=z$6QnOC} z6cFmC+M?4Y!G07L?GOtOVn2EvAT+4jjAJK?uk4p!e$gaz+S14y8QeiKHxRflWcq;I zjTVeDTqLV4V3e3a`!Mn%n4iyDv|_~yeG3F;ELh4FVC}(0H(Z!A6$Cmi$zfCE4jjF0 z;qd3Ruj8aZf>IRt2l`Regg^@5*b)U%;qEI}Ja%b^8sw}~T}?_t-KHY2M!>tOz}>pz zsZJ$tO|jX4EsoDPR+21Z=c!=Lnl+MF9UBy0rMTv^efxHKqeS8CQn%9`n49<{e!nVO9%|@u#3x4yA!7G_Wn*-f|RW<2yBicaSz7&F(cTc?etV8Zlr|NZxCelvp`hiVjCui+>@oULHU#m9vEN^lI~ ziYL|-+=(&)ccDg&8YMp*_{3lZ$9*aoX5sm@o}WxvmAAEmE26h4&OF;rjir(b?|kol z+D@nb?f>F!_5b&LZl}B2^h{V_Bt3F_0)+%PpQ`QZh;22V6*R|=)QEG_13no^s_vrl z%LHq}*_=Imb~3hr%+Nfz11o1XMYkNS*c($Xd%&kkQqL@{%%iNrWGbr2ra=Etif9^5 itwVY$a${P{9{3;N_1{>+_4Q!@0000 diff --git a/docs/yandex.png b/docs/yandex.png deleted file mode 100644 index 4f99b756ab05deb62b5c77bb1b1d1daddf0b4498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2524 zcmV<22_yE2P)Px;mPtfGRCodHTM2AUTNhqcS~Wd2&pa^?iN`}rh@oPpedemZB0^0uL<~VtW6VU% z@*+e~T0@PGXABZzo??i3N=+?l?EcrcZufD{)qDNVe^0A_?n>@G`>egr-utYzhjrHe zwvS>W8|d!cyR>!dRzmTO8a1N2b?Z`UYAOvFFo3F8uTCXOl%OtMx=774XU?P^J$g{t zvSsP!&6^Y#7bnlPZQE94A3b_Rt5>h42@@tr8U6b8qlptI($%Y1DJ3O^!otF&oGVwZ z(4s|)XyL+zefpH<&6`IvX3U^z)230kZr!L- zrAn6PJav=JQw2Gfvv1!%QA+RLy+!FdKU=nJG-%KuQ5K8_`ts$A7zOG5`}b4JmMv-E zz=2e_aAB~7K7anKlVT_s03E>G$1YsBKsj^fr0dtOi)_b^9jR8WTB1}K2n6}cl`B)P zUcKb1d97QwrkXWt658!dc&1pfV$!aYCr?Ut(V|7ERH;(5Wy==1x642%+%_X6B_&Zn zKmg^+m5Y*-ljTM5_x}BR8Z~N^C<=xl=}<&c{dx4|Uo}-)hN2wG}B+ zgkHaXO|M?PvWy7y^tp5A5~d~?%$W)lC?G~{-@ZLz%5+6g%$YN1jO-ULUeL2=&*;#h zL*F$LrmUeuhsrc)6u^mx4)`qG=LzjjkI-SJPMu0Bm+>$c@jL`k(~B8;xGIkpXP=RHA4v$?32A#UmX^oI6Jd{t1EmxaV#)H}ST$gu zkr2NB?Kekl>(*Io#hsq&A|i-@`w&xWjWxOtiY#+qXN6_WSQd)vBf2Ffa3~2JAIbU?4F{#8De>R~r-? z>qweL(I*~hCr+H84I4Jl>C>kL_h87UCEmPwBRjpg#eNg83;?bGBjJj$8Mv9JR&1%e zlf$+>@D14bb0*}y1Qkb{Wo?Ml?n(@DmhuHq$H*M{gv|b zQz|i0s%FEez`#IkJ{rF=Wy+|_moHnImN#!+$saOgh~n*RLzY1xij8HF<*j?wu3bAr z#$5KeapNqqyi=e;iWTDfwis#mX`C?GgE*pNXYckbN6hXEraBUNZ< zDBIg#co7j17TM07I}5);g$iobs#R*zq)Cdm?1g7G5@RD2<1wUu-X2%H)h{w=i>8Ex z1mTq~U0U&I6n1!cxbR|QW3`xVSNn~GrpLrM41-=59qmZR$6H>C(KyCE;|Ubw2IR-z zHU?iC>D;+<25;7^S)wc$R@03eH{{vu*|V#&XU}T3>eHu>$eN8bd-iPM_3z(bkYs!coz6QGg!qaz?9IqxegsV2p0eu z0678oVuJ_|^$j0BT+#qiZe(v2NGI@k1~8RoPcmbS#2`Y3i(+LW#$6G^Rf%%su)NW` zckg831_Jfy(W3^6^hXwEjn@Ne)g2-70EiZ-MvWSVsD^btc<{jB0ZdtlJJ)vhOo0gm z^sKM`#4x1nNn~7rm7&3ukl=WW$VkiE04@c{FF=dV1kdW<5<)*9j7E2KpTkxdaiAkd zj)><7FB2Xk=<(yna>XC;bi-DRo zYbNMcxXr-0!NoOCW5)At5^&9d(*`+Xx}6`>a^Pd6I1|8~W<S z_l%%SHxhel@}2;^!$AKl<;jzWpmdDF??t=WrIzYotZE$j$l+G zjC!2h$S5OajN@Q_Tc>m)LPku$h<4<1Yn8#a`6 z=|@Jo+e%zyX1bBICw1q}9b=ku(boT(T^}2cOgnb$aQh67uizLAh(DrT%3_^cvSf)& z$vD5nAJQVbc=2MF&v-H;(~X2)iK8rtjV(*tAk>?4Kl-9LF#&>mJ%9du@!&98FaMef>Gdc>a}gxu3d7>rbUYu1jBak-d#Mqc-|A!o}_cR9=+$rXAE%^ zfSp~(FD1oN=g5&GWBlvNSgS=QsnB?siRqPy$6r)bl<+1`o^0^!O89b2 zYm!H;?yfLwr(+}Vk3abM+Sfsh9?CCBIQEFen**q{eED*E^5lseo6&0wdN&*l9KYmX ztJL)2!v~2(H)zm6j-}}8Ik+n89M(K6`ltiZ1*|JLz5)jTgor`cu3hCj2uC~N-QoPw zh!G=w1Y0Aj$PQ!x0000 From ffcb2daca9938f1a9b63928ddd74fab0c20604b9 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Sat, 4 Dec 2021 16:32:50 +0100 Subject: [PATCH 02/28] Add unpkg & jsdelivr --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index a2f45e6d..2ff3d096 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ ], "type": "module", "main": "./lib/index", + "unpkg": "dist/csso.esm.js", + "jsdelivr": "dist/csso.esm.js", "browser": { "./cjs/version.cjs": "./dist/version.js", "./lib/version.js": "./dist/version.js" From eff51628165772e10728e633c86e586d876a4857 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Sat, 4 Dec 2021 16:33:29 +0100 Subject: [PATCH 03/28] Tweak readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d8207893..a64394ab 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,10 @@ npm install csso ## Usage -Basic usage: - ```js import { minify } from 'csso'; +// CommonJS is also supported +// const { minify } = require('csso'); const minifiedCss = minify('.test { color: #ff0000; }').css; @@ -40,7 +40,7 @@ console.log(minifiedCss); // .test{color:red} ``` -There are bundles are available for using in a browser: +Bundles are also available for use in a browser: - `dist/csso.js` – minified IIFE with `csso` as global ```html From f519136927e5b7935fab6d8280d1529b906db00f Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Sat, 4 Dec 2021 16:37:16 +0100 Subject: [PATCH 04/28] Change sections order --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a64394ab..499c0866 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,6 @@ CSSO (CSS Optimizer) is a CSS minifier. It performs three sort of transformations: cleaning (removing redundants), compression (replacement for the shorter forms) and restructuring (merge of declarations, rules and so on). As a result an output CSS becomes much smaller in size. -## Ready to use - -- [Web interface](http://css.github.io/csso/csso.html) -- [csso-cli](https://github.com/css/csso-cli) – command line interface -- [gulp-csso](https://github.com/ben-eb/gulp-csso) – `Gulp` plugin -- [grunt-csso](https://github.com/t32k/grunt-csso) – `Grunt` plugin -- [broccoli-csso](https://github.com/sindresorhus/broccoli-csso) – `Broccoli` plugin -- [postcss-csso](https://github.com/lahmatiy/postcss-csso) – `PostCSS` plugin -- [csso-loader](https://github.com/sandark7/csso-loader) – `webpack` loader -- [csso-webpack-plugin](https://github.com/zoobestik/csso-webpack-plugin) – `webpack` plugin -- [CSSO Visual Studio Code plugin](https://marketplace.visualstudio.com/items?itemName=Aneryu.csso) -- [vscode-csso](https://github.com/1000ch/vscode-csso) - Visual Studio Code plugin -- [atom-csso](https://github.com/1000ch/atom-csso) - Atom plugin -- [Sublime-csso](https://github.com/1000ch/Sublime-csso) - Sublime plugin - ## Install ``` @@ -88,6 +73,21 @@ console.log(minifiedCss); > Warning: CSSO doesn't guarantee API behind a `syntax` field as well as AST format. Both might be changed with changes in CSSTree. If you rely heavily on `syntax` API, a better option might be to use CSSTree directly. +## Related projects + +- [Web interface](http://css.github.io/csso/csso.html) +- [csso-cli](https://github.com/css/csso-cli) – command line interface +- [gulp-csso](https://github.com/ben-eb/gulp-csso) – `Gulp` plugin +- [grunt-csso](https://github.com/t32k/grunt-csso) – `Grunt` plugin +- [broccoli-csso](https://github.com/sindresorhus/broccoli-csso) – `Broccoli` plugin +- [postcss-csso](https://github.com/lahmatiy/postcss-csso) – `PostCSS` plugin +- [csso-loader](https://github.com/sandark7/csso-loader) – `webpack` loader +- [csso-webpack-plugin](https://github.com/zoobestik/csso-webpack-plugin) – `webpack` plugin +- [CSSO Visual Studio Code plugin](https://marketplace.visualstudio.com/items?itemName=Aneryu.csso) +- [vscode-csso](https://github.com/1000ch/vscode-csso) - Visual Studio Code plugin +- [atom-csso](https://github.com/1000ch/atom-csso) - Atom plugin +- [Sublime-csso](https://github.com/1000ch/Sublime-csso) - Sublime plugin + ## API From 994baee10fc295de4f396b1680c5a6f78f48cd45 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Sat, 4 Dec 2021 16:40:43 +0100 Subject: [PATCH 05/28] 5.0.0 --- CHANGELOG.md | 4 ++-- package-lock.json | 2 +- package.json | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d09e8f5d..8462d5e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ -## next +## 5.0.0 (December 4, 2021) - Added support for [CSS Selectors Level 4](https://www.w3.org/TR/selectors-4/) and legacy pseudos in specificity calculation, i.e. `:has()`, `:not()`, `:is()`, `:matches()`, `:-moz-any()`, `:-webkit-any()`, `:where()`, `:nth-child(... of )` and `:nth-last-child(... of )` - Package - Changed supported versions of Node.js to `^12.20.0`, `^14.13.0` and `>=15.0.0` - Converted to ES modules. However, CommonJS is supported as well (dual module) - Changed bundle set to provide `dist/csso.js` (an IIFE version with `csso` as a global name) and `dist/csso.esm.js` (as ES module). Both are minified - - Bumped `css-tree` to `2.0.1` + - Bumped `css-tree` to [`2.0`](https://github.com/csstree/csstree/releases/tag/v2.0.0) ## 4.2.0 (November 26, 2020) diff --git a/package-lock.json b/package-lock.json index 1ef85db9..0866ba4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "4.2.0", + "version": "5.0.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 2ff3d096..75313ba3 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,14 @@ { "name": "csso", - "version": "4.2.0", + "version": "5.0.0", "description": "CSS minifier with structural optimisations", "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ - "Roman Dvornov (https://github.com/lahmatiy)" + { + "name": "Roman Dvornov", + "email": "rdvornov@gmail.com", + "github-username": "lahmatiy" + } ], "repository": "css/csso", "license": "MIT", From d97a4571e4049e7d03a00fba1b6647c16ab2bb8e Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Sat, 4 Dec 2021 16:48:25 +0100 Subject: [PATCH 06/28] Fix coverage (path to fixtures) --- test/fixture/compress.js | 5 ++--- test/fixture/usage.js | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/test/fixture/compress.js b/test/fixture/compress.js index 61956feb..be812290 100644 --- a/test/fixture/compress.js +++ b/test/fixture/compress.js @@ -1,8 +1,7 @@ import { readdirSync, statSync, readFileSync } from 'fs'; -import { join, relative, dirname } from 'path'; -import { fileURLToPath } from 'url'; +import { join, relative } from 'path'; -const __dirname = dirname(fileURLToPath(import.meta.url)); +const __dirname = 'fixtures/compress'; const tests = {}; (function scan(dir) { diff --git a/test/fixture/usage.js b/test/fixture/usage.js index ec1a9a3c..98171d21 100644 --- a/test/fixture/usage.js +++ b/test/fixture/usage.js @@ -1,8 +1,7 @@ import { readdirSync, statSync, readFileSync } from 'fs'; -import { join, relative, dirname } from 'path'; -import { fileURLToPath } from 'url'; +import { join, relative } from 'path'; -const __dirname = dirname(fileURLToPath(import.meta.url)); +const __dirname = 'fixtures/usage'; const tests = {}; (function scan(dir) { From cc9cbe519293af083def3842131134d4d8f89be9 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Tue, 7 Dec 2021 17:39:18 +0100 Subject: [PATCH 07/28] Remove coveralls as redundant dependency (used as GitHub action) --- package-lock.json | 806 +--------------------------------------------- package.json | 1 - 2 files changed, 1 insertion(+), 806 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0866ba4f..8584bf2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,14 +6,13 @@ "packages": { "": { "name": "csso", - "version": "4.2.0", + "version": "5.0.0", "license": "MIT", "dependencies": { "css-tree": "2.0.1" }, "devDependencies": { "c8": "^7.10.0", - "coveralls": "^3.1.1", "esbuild": "^0.14.1", "eslint": "^7.24.0", "mocha": "^9.1.2", @@ -287,24 +286,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -314,42 +295,12 @@ "node": ">=8" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "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 }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -431,12 +382,6 @@ "node": ">=6" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -503,18 +448,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -530,31 +463,6 @@ "safe-buffer": "~5.1.1" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/coveralls": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", - "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", - "dev": true, - "dependencies": { - "js-yaml": "^3.13.1", - "lcov-parse": "^1.0.0", - "log-driver": "^1.2.7", - "minimist": "^1.2.5", - "request": "^2.88.2" - }, - "bin": { - "coveralls": "bin/coveralls.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -582,18 +490,6 @@ "npm": ">=7.0.0" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -617,15 +513,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -647,16 +534,6 @@ "node": ">=6.0.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1145,21 +1022,6 @@ "node": ">=0.10.0" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1259,29 +1121,6 @@ "node": ">=8.0.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1317,15 +1156,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -1382,29 +1212,6 @@ "node": ">=4.x" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1429,21 +1236,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -1554,12 +1346,6 @@ "node": ">=8" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -1578,12 +1364,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -1639,18 +1419,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1663,36 +1431,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/lcov-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", - "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", - "dev": true, - "bin": { - "lcov-parse": "bin/cli.js" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -1733,15 +1471,6 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "node_modules/log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true, - "engines": { - "node": ">=0.8.6" - } - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -1799,27 +1528,6 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz", "integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==" }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1832,12 +1540,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "node_modules/mocha": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", @@ -1976,15 +1678,6 @@ "node": ">=0.10.0" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2080,12 +1773,6 @@ "node": ">=8" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -2116,12 +1803,6 @@ "node": ">=0.4.0" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2131,15 +1812,6 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -2173,38 +1845,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -2268,12 +1908,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2356,31 +1990,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2501,37 +2110,6 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2565,16 +2143,6 @@ "punycode": "^2.1.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -2604,20 +2172,6 @@ "node": ">= 8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2973,60 +2527,18 @@ "sprintf-js": "~1.0.2" } }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "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 }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -3092,12 +2604,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -3150,15 +2656,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3174,25 +2671,6 @@ "safe-buffer": "~5.1.1" } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "coveralls": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", - "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", - "dev": true, - "requires": { - "js-yaml": "^3.13.1", - "lcov-parse": "^1.0.0", - "log-driver": "^1.2.7", - "minimist": "^1.2.5", - "request": "^2.88.2" - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3213,15 +2691,6 @@ "source-map": "^0.6.1" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -3237,12 +2706,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -3258,16 +2721,6 @@ "esutils": "^2.0.2" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -3591,18 +3044,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3681,23 +3122,6 @@ "signal-exit": "^3.0.2" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3723,15 +3147,6 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -3770,22 +3185,6 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3804,17 +3203,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -3895,12 +3283,6 @@ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -3913,12 +3295,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -3962,18 +3338,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3986,30 +3350,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "lcov-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", - "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", - "dev": true - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4041,12 +3381,6 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -4088,21 +3422,6 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz", "integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==" }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, - "requires": { - "mime-db": "1.51.0" - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4112,12 +3431,6 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "mocha": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", @@ -4223,12 +3536,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4297,12 +3604,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -4321,24 +3622,12 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -4363,34 +3652,6 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4433,12 +3694,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -4500,23 +3755,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4611,31 +3849,6 @@ "is-number": "^7.0.0" } }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4660,12 +3873,6 @@ "punycode": "^2.1.0" } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -4691,17 +3898,6 @@ } } }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 75313ba3..d05cf425 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,6 @@ }, "devDependencies": { "c8": "^7.10.0", - "coveralls": "^3.1.1", "esbuild": "^0.14.1", "eslint": "^7.24.0", "mocha": "^9.1.2", From ce6cc1bc261222fc02c2ac8e4816f1e426660d6f Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 8 Dec 2021 16:15:18 +0100 Subject: [PATCH 08/28] Fix path to csso bundle --- .gh-pages/csso.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gh-pages/csso.html b/.gh-pages/csso.html index 4d628917..56bdd389 100644 --- a/.gh-pages/csso.html +++ b/.gh-pages/csso.html @@ -6,7 +6,7 @@ - + From d80269920a1fd9d342b9c96e185cb0b27bd83130 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 00:29:36 +0100 Subject: [PATCH 09/28] source-map -> source-map-js --- package-lock.json | 17 ++++++++++++++++- package.json | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8584bf2f..a8089a35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "eslint": "^7.24.0", "mocha": "^9.1.2", "rollup": "^2.60.2", - "source-map": "^0.6.1" + "source-map-js": "^1.0.1" }, "engines": { "node": "^12.20.0 || ^14.13.0 || >=15.0.0", @@ -1984,6 +1984,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3749,6 +3758,12 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", diff --git a/package.json b/package.json index d05cf425..06b78e07 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "eslint": "^7.24.0", "mocha": "^9.1.2", "rollup": "^2.60.2", - "source-map": "^0.6.1" + "source-map-js": "^1.0.1" }, "engines": { "node": "^12.20.0 || ^14.13.0 || >=15.0.0", From 9ba503861b2b91e5c69b819e90b4c2f6a8434e9c Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 00:30:09 +0100 Subject: [PATCH 10/28] Tweak path to fixtures --- test/fixture/compress.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/fixture/compress.js b/test/fixture/compress.js index be812290..ef0fd04a 100644 --- a/test/fixture/compress.js +++ b/test/fixture/compress.js @@ -1,7 +1,7 @@ import { readdirSync, statSync, readFileSync } from 'fs'; -import { join, relative } from 'path'; +import { join, relative, resolve } from 'path'; -const __dirname = 'fixtures/compress'; +const __dirname = resolve(new URL(import.meta.url).pathname, '../../../fixtures/compress'); const tests = {}; (function scan(dir) { From d47b33d0a398f52c30d9edf041a59bec8b78036a Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 00:59:59 +0100 Subject: [PATCH 11/28] Add csso/syntax and related refactoring --- CHANGELOG.md | 5 +++++ lib/index.js | 2 +- lib/syntax.js | 56 +++++++++++++++++++++++++++++++++++++-------------- package.json | 4 ++++ 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8462d5e6..0a429110 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## next + +- Added exports: + - `csso/syntax` + ## 5.0.0 (December 4, 2021) - Added support for [CSS Selectors Level 4](https://www.w3.org/TR/selectors-4/) and legacy pseudos in specificity calculation, i.e. `:has()`, `:not()`, `:is()`, `:matches()`, `:-moz-any()`, `:-webkit-any()`, `:where()`, `:nth-child(... of )` and `:nth-last-child(... of )` diff --git a/lib/index.js b/lib/index.js index f146a58a..66ccf2b8 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,5 @@ -import { syntax } from './syntax.js'; import { version } from './version.js'; +import * as syntax from './syntax.js'; import * as utils from './utils.js'; const { parse, generate, compress } = syntax; diff --git a/lib/syntax.js b/lib/syntax.js index 603f6089..724bd0fb 100644 --- a/lib/syntax.js +++ b/lib/syntax.js @@ -11,24 +11,50 @@ function encodeString(value) { : stringQuote; } -export const syntax = { - ...fork({ - node: { - String: { - generate(node) { - this.token(TYPE.String, encodeString(node.value)); - } - }, - Url: { - generate(node) { - const encodedUrl = url.encode(node.value); - const string = encodeString(node.value); +const { + lexer, + tokenize, + parse, + generate, + walk, + find, + findLast, + findAll, + fromPlainObject, + toPlainObject +} = fork({ + node: { + String: { + generate(node) { + this.token(TYPE.String, encodeString(node.value)); + } + }, + Url: { + generate(node) { + const encodedUrl = url.encode(node.value); + const string = encodeString(node.value); - this.token(TYPE.Url, encodedUrl.length <= string.length + 5 ? encodedUrl : 'url(' + string + ')'); - } + this.token(TYPE.Url, + encodedUrl.length <= string.length + 5 /* "url()".length */ + ? encodedUrl + : 'url(' + string + ')' + ); } } - }), + } +}); + +export { + lexer, + tokenize, + parse, + generate, + walk, + find, + findLast, + findAll, + fromPlainObject, + toPlainObject, specificity, compress }; diff --git a/package.json b/package.json index 06b78e07..50c10811 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,10 @@ "import": "./lib/index.js", "require": "./cjs/index.cjs" }, + "./syntax": { + "import": "./lib/syntax.js", + "require": "./cjs/syntax.cjs" + }, "./dist/*": "./dist/*.js", "./package.json": "./package.json" }, From 13d7a368103864911c10758297abfaaee6021f37 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 01:19:09 +0100 Subject: [PATCH 12/28] Bump css-tree to ~2.0.2 --- CHANGELOG.md | 1 + package-lock.json | 35 ++++++++++------------------------- package.json | 2 +- 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a429110..71eee087 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## next +- Bumped `css-tree` to `~2.0.2` - Added exports: - `csso/syntax` diff --git a/package-lock.json b/package-lock.json index a8089a35..796109fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "5.0.0", "license": "MIT", "dependencies": { - "css-tree": "2.0.1" + "css-tree": "~2.0.2" }, "devDependencies": { "c8": "^7.10.0", @@ -478,12 +478,12 @@ } }, "node_modules/css-tree": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.1.tgz", - "integrity": "sha512-rY9547sbMV6T7uD7ZI+b0ncoH7uA4DVil6TLHewrAai28DMDVFxwu0yK/e4wMk4DlP/NFpkpWYWtkZwbpSdpaw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.2.tgz", + "integrity": "sha512-eMdDh8/KKSYSlsRXBS1KoCE981Q/UZKibpZi4xWSBA0wEhQAbKF9j34XSPC5zM79d5TTbKZ8eF0bz6d+ewcY2A==", "dependencies": { "mdn-data": "2.0.23", - "source-map": "^0.6.1" + "source-map-js": "^1.0.1" }, "engines": { "node": "^12.20.0 || ^14.13.0 || >=15.0.0", @@ -1976,19 +1976,10 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2692,12 +2683,12 @@ } }, "css-tree": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.1.tgz", - "integrity": "sha512-rY9547sbMV6T7uD7ZI+b0ncoH7uA4DVil6TLHewrAai28DMDVFxwu0yK/e4wMk4DlP/NFpkpWYWtkZwbpSdpaw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.2.tgz", + "integrity": "sha512-eMdDh8/KKSYSlsRXBS1KoCE981Q/UZKibpZi4xWSBA0wEhQAbKF9j34XSPC5zM79d5TTbKZ8eF0bz6d+ewcY2A==", "requires": { "mdn-data": "2.0.23", - "source-map": "^0.6.1" + "source-map-js": "^1.0.1" } }, "debug": { @@ -3753,16 +3744,10 @@ "is-fullwidth-code-point": "^3.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, "source-map-js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", - "dev": true + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" }, "sprintf-js": { "version": "1.0.3", diff --git a/package.json b/package.json index 50c10811..0e2702a3 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null" }, "dependencies": { - "css-tree": "2.0.1" + "css-tree": "~2.0.2" }, "devDependencies": { "c8": "^7.10.0", From 250ff0505ab4322ac43f96faed7b4cc7c361849a Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 01:22:09 +0100 Subject: [PATCH 13/28] Add note about `csso/syntax` entry point --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 499c0866..9b746b4f 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,19 @@ console.log(minifiedCss); // .test{color:red} ``` +Also syntax can be imported using `csso/syntax` entry point: + +```js +import { parse, compress, generate } from 'csso/syntax'; + +const ast = parse('.test { color: #ff0000; }'); +const compressedAst = compress(ast).ast; +const minifiedCss = generate(compressedAst); + +console.log(minifiedCss); +// .test{color:red} +``` + > Warning: CSSO doesn't guarantee API behind a `syntax` field as well as AST format. Both might be changed with changes in CSSTree. If you rely heavily on `syntax` API, a better option might be to use CSSTree directly. ## Related projects From 6b799a3c079b3c39d1b9923dd555bd79b601fd9b Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 02:17:25 +0100 Subject: [PATCH 14/28] Bump css-tree to 2.0.3 and test fixes --- CHANGELOG.md | 4 ++-- fixtures/compress/css21/part4.3.2-9.min.css | 2 +- fixtures/compress/css21/part6.3-3.min.css | 2 +- fixtures/compress/css21/part6.3-4.min.css | 2 +- fixtures/compress/issue/134.min.css | 2 +- fixtures/compress/issue/16.min.css | 2 +- fixtures/compress/issue/50-2.min.css | 2 +- fixtures/compress/number.min.css | 2 +- fixtures/compress/restructure.border/1.min.css | 2 +- package-lock.json | 14 +++++++------- package.json | 2 +- test/sourceMaps.js | 2 +- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71eee087..44094768 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ -## next +## 5.0.1 (December 14, 2021) -- Bumped `css-tree` to `~2.0.2` +- Bumped `css-tree` to `~2.0.3` (various fixes on generate CSS) - Added exports: - `csso/syntax` diff --git a/fixtures/compress/css21/part4.3.2-9.min.css b/fixtures/compress/css21/part4.3.2-9.min.css index a212c919..febef121 100644 --- a/fixtures/compress/css21/part4.3.2-9.min.css +++ b/fixtures/compress/css21/part4.3.2-9.min.css @@ -1 +1 @@ -a{b:.1em .2ex .3px .4in .5cm .6mm .7pt .8px;c:.001em .002ex .003px .004in .005cm .006mm .007pt .008px;d:8em 7.1ex 6.2px 5.3in 4.4cm 3.5mm 2.6pt 1.7px;e:0 0 0 0 0 0;f:0 0 0%0%0%0 0 0 0;g:0 0 0 0 0 0;h:0s 0s 0s 0s 0s 0s .2s 10.01s;i:10px 10} +a{b:.1em .2ex .3px .4in .5cm .6mm .7pt .8px;c:.001em .002ex .003px .004in .005cm .006mm .007pt .008px;d:8em 7.1ex 6.2px 5.3in 4.4cm 3.5mm 2.6pt 1.7px;e:0 0 0 0 0 0;f:0 0 0% 0% 0%0 0 0 0;g:0 0 0 0 0 0;h:0s 0s 0s 0s 0s 0s .2s 10.01s;i:10px 10} diff --git a/fixtures/compress/css21/part6.3-3.min.css b/fixtures/compress/css21/part6.3-3.min.css index 70073829..2785fa88 100644 --- a/fixtures/compress/css21/part6.3-3.min.css +++ b/fixtures/compress/css21/part6.3-3.min.css @@ -1 +1 @@ -@import url(fineprint.css) print; +@import url(fineprint.css)print; diff --git a/fixtures/compress/css21/part6.3-4.min.css b/fixtures/compress/css21/part6.3-4.min.css index 59b2e262..7c2d309d 100644 --- a/fixtures/compress/css21/part6.3-4.min.css +++ b/fixtures/compress/css21/part6.3-4.min.css @@ -1 +1 @@ -@import url(bluish.css) projection,tv; +@import url(bluish.css)projection,tv; diff --git a/fixtures/compress/issue/134.min.css b/fixtures/compress/issue/134.min.css index 6a201609..864baa00 100644 --- a/fixtures/compress/issue/134.min.css +++ b/fixtures/compress/issue/134.min.css @@ -1 +1 @@ -a{border-color:transparent transparent transparent#fd0}b{border-color:rgba(0,0,0,.2) rgba(0,0,0,.1)}c{border-color:#1a1a1a#000 rgba(127,127,127,.5) rgba(28,23,23,.1)} +a{border-color:transparent transparent transparent #fd0}b{border-color:rgba(0,0,0,.2) rgba(0,0,0,.1)}c{border-color:#1a1a1a #000 rgba(127,127,127,.5) rgba(28,23,23,.1)} diff --git a/fixtures/compress/issue/16.min.css b/fixtures/compress/issue/16.min.css index b85c9c6a..8a752ae0 100644 --- a/fixtures/compress/issue/16.min.css +++ b/fixtures/compress/issue/16.min.css @@ -1 +1 @@ -a{background:url(img/image.png) no-repeat} +a{background:url(img/image.png)no-repeat} diff --git a/fixtures/compress/issue/50-2.min.css b/fixtures/compress/issue/50-2.min.css index 2538a425..bfa069c9 100644 --- a/fixtures/compress/issue/50-2.min.css +++ b/fixtures/compress/issue/50-2.min.css @@ -1 +1 @@ -@font-face{font-family:"pictos";src:url(../fonts/pictos-web.eot);src:local("☺"),url(data:application/x-font-woff;charset=utf-8;base64,longbase64encodedstring) format("woff"),url(data:font/truetype;charset=utf-8;base64,otherlongbase64encodedstring) format("truetype"),url(pictos-web.svg#webfontIyfZbseF) format("svg");font-weight:400;font-style:normal} +@font-face{font-family:"pictos";src:url(../fonts/pictos-web.eot);src:local("☺"),url(data:application/x-font-woff;charset=utf-8;base64,longbase64encodedstring)format("woff"),url(data:font/truetype;charset=utf-8;base64,otherlongbase64encodedstring)format("truetype"),url(pictos-web.svg#webfontIyfZbseF)format("svg");font-weight:400;font-style:normal} diff --git a/fixtures/compress/number.min.css b/fixtures/compress/number.min.css index 3f434d2e..159fb9eb 100644 --- a/fixtures/compress/number.min.css +++ b/fixtures/compress/number.min.css @@ -1 +1 @@ -basic-number{a:100;b:100;c:100;d:-100;e:.123;f:.123;g:0;h:0;j:0}basic-dimension{a:100ms;b:100ms;c:100ms;d:-100ms;e:.123ms;f:.123ms;g:0ms;h:0ms;j:0ms}basic-percentage{a:100%;b:100%;c:100%;d:-100%;e:.123%;f:.123%;g:0%;h:0%;j:0%}omit-plussign-number{a:15;b:15;c:1,15;d:1 15;e:fn(15)15;f:+ 15;h:1%15}omit-plussign-dimension{a:15ms;b:15ms;c:1,15ms;d:1 15ms;e:fn(15ms)15ms;f:+ 15ms;h:1%15ms}omit-plussign-percentage{a:15%;b:15%;c:1,15%;d:1 15%;e:fn(15%)15%;f:+ 15%;h:1%15%}keep-plussign-number{a:1 15;b:1px 15;c:#123 15;d:#abc 15;e:ident 15;f:u+00-aa 15;f:calc(15 + 15)}keep-plussign-dimension{a:1 15ms;b:1px 15ms;c:#123 15ms;d:#abc 15ms;e:ident 15ms;f:u+00-aa 15ms;f:calc(15ms + 15ms)}keep-plussign-percentage{a:1 15%;b:1px 15%;c:#123 15%;d:#abc 15%;e:ident 15%;f:u+00-aa 15%;f:calc(15px + 15%)} +basic-number{a:100;b:100;c:100;d:-100;e:.123;f:.123;g:0;h:0;j:0}basic-dimension{a:100ms;b:100ms;c:100ms;d:-100ms;e:.123ms;f:.123ms;g:0ms;h:0ms;j:0ms}basic-percentage{a:100%;b:100%;c:100%;d:-100%;e:.123%;f:.123%;g:0%;h:0%;j:0%}omit-plussign-number{a:15;b:15;c:1,15;d:1 15;e:fn(15)15;f:+ 15;h:1%15}omit-plussign-dimension{a:15ms;b:15ms;c:1,15ms;d:1 15ms;e:fn(15ms) 15ms;f:+ 15ms;h:1% 15ms}omit-plussign-percentage{a:15%;b:15%;c:1,15%;d:1 15%;e:fn(15%) 15%;f:+ 15%;h:1% 15%}keep-plussign-number{a:1 15;b:1px 15;c:#123 15;d:#abc 15;e:ident 15;f:u+00-aa 15;f:calc(15 + 15)}keep-plussign-dimension{a:1 15ms;b:1px 15ms;c:#123 15ms;d:#abc 15ms;e:ident 15ms;f:u+00-aa 15ms;f:calc(15ms + 15ms)}keep-plussign-percentage{a:1 15%;b:1px 15%;c:#123 15%;d:#abc 15%;e:ident 15%;f:u+00-aa 15%;f:calc(15px + 15%)} diff --git a/fixtures/compress/restructure.border/1.min.css b/fixtures/compress/restructure.border/1.min.css index ad4f5a80..bc532faf 100644 --- a/fixtures/compress/restructure.border/1.min.css +++ b/fixtures/compress/restructure.border/1.min.css @@ -1 +1 @@ -.foo{border-color:red#00f red red} +.foo{border-color:red #00f red red} diff --git a/package-lock.json b/package-lock.json index 796109fd..e843a705 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "5.0.0", "license": "MIT", "dependencies": { - "css-tree": "~2.0.2" + "css-tree": "~2.0.3" }, "devDependencies": { "c8": "^7.10.0", @@ -478,9 +478,9 @@ } }, "node_modules/css-tree": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.2.tgz", - "integrity": "sha512-eMdDh8/KKSYSlsRXBS1KoCE981Q/UZKibpZi4xWSBA0wEhQAbKF9j34XSPC5zM79d5TTbKZ8eF0bz6d+ewcY2A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.3.tgz", + "integrity": "sha512-hZAQj0YUpaFrjYVLe6582UcX8phT+AZy+bL/GIQpOJltL7s0apubsyi2X8o6jJWy0JJxlTN9hCJ9JjvikKjbWg==", "dependencies": { "mdn-data": "2.0.23", "source-map-js": "^1.0.1" @@ -2683,9 +2683,9 @@ } }, "css-tree": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.2.tgz", - "integrity": "sha512-eMdDh8/KKSYSlsRXBS1KoCE981Q/UZKibpZi4xWSBA0wEhQAbKF9j34XSPC5zM79d5TTbKZ8eF0bz6d+ewcY2A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.3.tgz", + "integrity": "sha512-hZAQj0YUpaFrjYVLe6582UcX8phT+AZy+bL/GIQpOJltL7s0apubsyi2X8o6jJWy0JJxlTN9hCJ9JjvikKjbWg==", "requires": { "mdn-data": "2.0.23", "source-map-js": "^1.0.1" diff --git a/package.json b/package.json index 0e2702a3..03c8bac6 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null" }, "dependencies": { - "css-tree": "~2.0.2" + "css-tree": "~2.0.3" }, "devDependencies": { "c8": "^7.10.0", diff --git a/test/sourceMaps.js b/test/sourceMaps.js index 19766866..d5551cec 100644 --- a/test/sourceMaps.js +++ b/test/sourceMaps.js @@ -1,7 +1,7 @@ import { readFileSync } from 'fs'; import assert, { equal, deepEqual } from 'assert'; import { minify } from 'csso'; -import { SourceMapConsumer } from 'source-map'; +import { SourceMapConsumer } from 'source-map-js'; const css = '.a { color: #ff0000; }\n.b { display: block; float: left; }'; const minifiedCss = '.a{color:red}.b{display:block;float:left}'; From c0c27a6f8bebdfd98e8702f8672adc89fc685cd5 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 02:20:56 +0100 Subject: [PATCH 15/28] Update github action for build --- .github/workflows/build.yml | 67 +++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a018ba8b..bb0cdb4d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,31 +4,39 @@ on: push: pull_request: +env: + PRIMARY_NODEJS_VERSION: 16 + REPORTER: "min" + jobs: - lint-coverage: + lint: + name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Setup node 16 + - name: Setup node ${{ env.PRIMARY_NODEJS_VERSION }} uses: actions/setup-node@v2 with: - node-version: 16 - cache: "npm" + node-version: ${{ env.PRIMARY_NODEJS_VERSION }} + cache: "npm" - run: npm ci - run: npm run lint - - run: npm run bundle-and-test - env: - REPORTER: "min" - - run: npm run coverage - env: - REPORTER: "min" - - name: Send coverage to Coveralls - uses: coverallsapp/github-action@1.1.3 + + test-bundle: + name: Test bundle + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup node ${{ env.PRIMARY_NODEJS_VERSION }} + uses: actions/setup-node@v2 with: - github-token: ${{ secrets.GITHUB_TOKEN }} + node-version: ${{ env.PRIMARY_NODEJS_VERSION }} + cache: "npm" + - run: npm ci + - run: npm run bundle-and-test - run-tests: - needs: lint-coverage + unit-tests: + name: Unit tests runs-on: ubuntu-latest strategy: @@ -44,12 +52,29 @@ jobs: - name: Setup node ${{ matrix.node_version }} uses: actions/setup-node@v2 with: - node-version: ${{ matrix.node_version }} - cache: "npm" + node-version: ${{ matrix.node_version }} + cache: "npm" - run: npm ci - run: npm run test - env: - REPORTER: "min" - run: npm run esm-to-cjs-and-test - env: - REPORTER: "min" + + - run: npm run coverage + if: ${{ matrix.node_version == env.PRIMARY_NODEJS_VERSION }} + - name: Coveralls parallel + if: ${{ matrix.node_version == env.PRIMARY_NODEJS_VERSION }} + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + flag-name: node-${{ matrix.node_version }} + parallel: true + + send-to-coveralls: + name: Send coverage to Coveralls + needs: unit-tests + runs-on: ubuntu-latest + steps: + - name: Send coverage to Coveralls + uses: coverallsapp/github-action@1.1.3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true From 349a8053297c1b5b42adbc0c5f8f73bb5d85a8ca Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 15 Dec 2021 02:23:11 +0100 Subject: [PATCH 16/28] 5.0.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e843a705..bfd29301 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "csso", - "version": "5.0.0", + "version": "5.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "csso", - "version": "5.0.0", + "version": "5.0.1", "license": "MIT", "dependencies": { "css-tree": "~2.0.3" diff --git a/package.json b/package.json index 03c8bac6..110650ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "5.0.0", + "version": "5.0.1", "description": "CSS minifier with structural optimisations", "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ From 4feb6079ca08b756bfef234c6cca20c3e6cc5af0 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Fri, 17 Dec 2021 16:22:05 +0100 Subject: [PATCH 17/28] Fix main field to refer cjs module --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44094768..25048631 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## next + +- Fixed `main` field in `package.json` to refer to CommonJS module + ## 5.0.1 (December 14, 2021) - Bumped `css-tree` to `~2.0.3` (various fixes on generate CSS) diff --git a/package.json b/package.json index 110650ed..6fab60db 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "csstree" ], "type": "module", - "main": "./lib/index", + "main": "./cjs/index.cjs", "unpkg": "dist/csso.esm.js", "jsdelivr": "dist/csso.esm.js", "browser": { From 2f9b96c8bf86c44c94bcae44fb5f4600ea2f3e58 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Fri, 17 Dec 2021 16:24:19 +0100 Subject: [PATCH 18/28] Bump `css-tree` to `~2.0.4` --- CHANGELOG.md | 1 + package-lock.json | 16 ++++++++-------- package.json | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25048631..8c53a078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## next - Fixed `main` field in `package.json` to refer to CommonJS module +- Bumped `css-tree` to `~2.0.4` (fixed CSS serialization issue in IE11) ## 5.0.1 (December 14, 2021) diff --git a/package-lock.json b/package-lock.json index bfd29301..dffbaa30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "5.0.1", "license": "MIT", "dependencies": { - "css-tree": "~2.0.3" + "css-tree": "~2.0.4" }, "devDependencies": { "c8": "^7.10.0", @@ -478,15 +478,15 @@ } }, "node_modules/css-tree": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.3.tgz", - "integrity": "sha512-hZAQj0YUpaFrjYVLe6582UcX8phT+AZy+bL/GIQpOJltL7s0apubsyi2X8o6jJWy0JJxlTN9hCJ9JjvikKjbWg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz", + "integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==", "dependencies": { "mdn-data": "2.0.23", "source-map-js": "^1.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.0 || >=15.0.0", + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", "npm": ">=7.0.0" } }, @@ -2683,9 +2683,9 @@ } }, "css-tree": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.3.tgz", - "integrity": "sha512-hZAQj0YUpaFrjYVLe6582UcX8phT+AZy+bL/GIQpOJltL7s0apubsyi2X8o6jJWy0JJxlTN9hCJ9JjvikKjbWg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz", + "integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==", "requires": { "mdn-data": "2.0.23", "source-map-js": "^1.0.1" diff --git a/package.json b/package.json index 6fab60db..78f62601 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null" }, "dependencies": { - "css-tree": "~2.0.3" + "css-tree": "~2.0.4" }, "devDependencies": { "c8": "^7.10.0", From f1c6aeb69065a94801e3cfe9621b24509c18140f Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Fri, 17 Dec 2021 18:11:11 +0100 Subject: [PATCH 19/28] Extend Node.js support to include ^10 --- .github/workflows/build.yml | 2 + CHANGELOG.md | 3 +- package-lock.json | 2 +- package.json | 4 +- scripts/esm-to-cjs.cjs | 121 ++++++++++++++++++++++++++++++++++++ scripts/esm-to-cjs.js | 79 ----------------------- 6 files changed, 128 insertions(+), 83 deletions(-) create mode 100644 scripts/esm-to-cjs.cjs delete mode 100644 scripts/esm-to-cjs.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bb0cdb4d..3fe1c48b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,6 +43,7 @@ jobs: matrix: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ node_version: + - 10 - 12.20.0 - 14.13.0 - 16 @@ -56,6 +57,7 @@ jobs: cache: "npm" - run: npm ci - run: npm run test + if: ${{ matrix.node_version != '10' }} - run: npm run esm-to-cjs-and-test - run: npm run coverage diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c53a078..f6c61c61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## next +- Extended Node.js support to include `^10` - Fixed `main` field in `package.json` to refer to CommonJS module - Bumped `css-tree` to `~2.0.4` (fixed CSS serialization issue in IE11) @@ -13,7 +14,7 @@ - Added support for [CSS Selectors Level 4](https://www.w3.org/TR/selectors-4/) and legacy pseudos in specificity calculation, i.e. `:has()`, `:not()`, `:is()`, `:matches()`, `:-moz-any()`, `:-webkit-any()`, `:where()`, `:nth-child(... of )` and `:nth-last-child(... of )` - Package - - Changed supported versions of Node.js to `^12.20.0`, `^14.13.0` and `>=15.0.0` + - Changed supported versions of Node.js to `^12.20.0`, `^14.13.0` and `>=15.0.0` (extended in `5.0.2` to include `^10`) - Converted to ES modules. However, CommonJS is supported as well (dual module) - Changed bundle set to provide `dist/csso.js` (an IIFE version with `csso` as a global name) and `dist/csso.esm.js` (as ES module). Both are minified - Bumped `css-tree` to [`2.0`](https://github.com/csstree/csstree/releases/tag/v2.0.0) diff --git a/package-lock.json b/package-lock.json index dffbaa30..fa21cbcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "source-map-js": "^1.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.0 || >=15.0.0", + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", "npm": ">=7.0.0" } }, diff --git a/package.json b/package.json index 78f62601..09186334 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "build-and-test": "npm run build && npm run test:dist && npm run test:cjs", "bundle": "node scripts/bundle", "bundle-and-test": "npm run bundle && npm run test:dist", - "esm-to-cjs": "node scripts/esm-to-cjs", + "esm-to-cjs": "node scripts/esm-to-cjs.cjs", "esm-to-cjs-and-test": "npm run esm-to-cjs && npm run test:cjs", "coverage": "c8 --reporter=lcovonly npm test", "prepublishOnly": "npm run lint-and-test && npm run build-and-test", @@ -69,7 +69,7 @@ "source-map-js": "^1.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.0 || >=15.0.0", + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", "npm": ">=7.0.0" }, "files": [ diff --git a/scripts/esm-to-cjs.cjs b/scripts/esm-to-cjs.cjs new file mode 100644 index 00000000..1e249702 --- /dev/null +++ b/scripts/esm-to-cjs.cjs @@ -0,0 +1,121 @@ +// This script is written using CommonJS since it should run +// on Node.js versions which don't support for ESM + +const fs = require('fs'); +const path = require('path'); +const { rollup } = require('rollup'); + +const { name: packageName } = require('../package.json'); + +const external = [ + 'module', + 'fs', + 'path', + 'url', + 'assert', + 'json-to-ast', + 'css-tree', + 'csso', + /^source-map/ +]; + +function removeCreateRequire(id) { + return fs.readFileSync(id, 'utf8') + .replace(/import .+ from 'module';/, '') + .replace(/const require = .+;/, ''); +} + +function replaceContent(map) { + return { + name: 'file-content-replacement', + load(id) { + const key = path.relative('', id); + + if (map.hasOwnProperty(key)) { + return map[key](id); + } + } + }; +} + +function patchTests() { + // If Node.js doesn't support for `exports` it doesn't support for import/require + // by package name inside the package itself, so this resolving will fail. + // We can't use just `require(packageName)` here since CJS modules are not generated yet, + // and Node.js will fail on resolving it either disregarding of `exports` support. + // In this case we need to replace import/require using a package name with + // a relative path to a module. + try { + require(`${packageName}/package.json`); + return; + } catch (e) {} + + const pathToIndex = path.resolve(__dirname, '../cjs/index.cjs'); + + // Make replacement for relative path only for tests since we need to check everything + // is work on old Node.js version. The rest of code should be unchanged since will run + // on any Node.js version. + console.log(`Fixing CommonJS tests by replacing "${packageName}" for a relative paths`); + + return { + name: 'cjs-tests-fix', + resolveId(source) { + if (/^..\/cjs/.test(source)) { + return { id: source, external: true }; + } + return null; + }, + transform(code, id) { + return code.replace( + new RegExp(`from (['"])${packageName}\\1;`, 'g'), + `from '${path.relative(path.dirname(id), pathToIndex)}'` + ); + } + }; +} + +function readDir(dir) { + return fs.readdirSync(dir) + .filter(fn => fn.endsWith('.js')) + .map(fn => `${dir}/${fn}`); +} + +async function build(outputDir, patch, ...entryPoints) { + const startTime = Date.now(); + + console.log(); + console.log(`Convert ESM to CommonJS (output: ${outputDir})`); + + const res = await rollup({ + external, + input: entryPoints, + plugins: [ + replaceContent({ + 'lib/version.js': removeCreateRequire + }), + patch && patchTests() + ] + }); + await res.write({ + dir: outputDir, + entryFileNames: '[name].cjs', + format: 'cjs', + exports: 'auto', + preserveModules: true, + interop: false, + esModule: false, + generatedCode: { + constBindings: true + } + }); + await res.close(); + + console.log(`Done in ${Date.now() - startTime}ms`); +} + +async function buildAll() { + await build('./cjs', false, 'lib/index.js'); + await build('./cjs-test', true, ...readDir('test')); +} + +buildAll(); diff --git a/scripts/esm-to-cjs.js b/scripts/esm-to-cjs.js deleted file mode 100644 index 93c1664b..00000000 --- a/scripts/esm-to-cjs.js +++ /dev/null @@ -1,79 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { rollup } from 'rollup'; - -const external = [ - 'module', - 'fs', - 'path', - 'url', - 'assert', - 'json-to-ast', - 'css-tree', - 'csso', - /^source-map/ -]; - -function removeCreateRequire(id) { - return fs.readFileSync(id, 'utf8') - .replace(/import .+ from 'module';/, '') - .replace(/const require = .+;/, ''); -} - -function replaceContent(map) { - return { - name: 'file-content-replacement', - load(id) { - const key = path.relative('', id); - - if (map.hasOwnProperty(key)) { - return map[key](id); - } - } - }; -} - -function readDir(dir) { - return fs.readdirSync(dir) - .filter(fn => fn.endsWith('.js')) - .map(fn => `${dir}/${fn}`); -} - -async function build(outputDir, ...entryPoints) { - const startTime = Date.now(); - - console.log(); - console.log(`Convert ESM to CommonJS (output: ${outputDir})`); - - const res = await rollup({ - external, - input: entryPoints, - plugins: [ - replaceContent({ - 'lib/version.js': removeCreateRequire - }) - ] - }); - await res.write({ - dir: outputDir, - entryFileNames: '[name].cjs', - format: 'cjs', - exports: 'auto', - preserveModules: true, - interop: false, - esModule: false, - generatedCode: { - constBindings: true - } - }); - await res.close(); - - console.log(`Done in ${Date.now() - startTime}ms`); -} - -async function buildAll() { - await build('./cjs', 'lib/index.js'); - await build('./cjs-test', ...readDir('test')); -} - -buildAll(); From a96224ac4386e860ca278834919d202f760c0b71 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Fri, 17 Dec 2021 18:17:29 +0100 Subject: [PATCH 20/28] 5.0.2 --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6c61c61..ae9793fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## next +## 5.0.2 (December 17, 2021) - Extended Node.js support to include `^10` - Fixed `main` field in `package.json` to refer to CommonJS module diff --git a/package-lock.json b/package-lock.json index fa21cbcb..585fdf1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "csso", - "version": "5.0.1", + "version": "5.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "csso", - "version": "5.0.1", + "version": "5.0.2", "license": "MIT", "dependencies": { "css-tree": "~2.0.4" diff --git a/package.json b/package.json index 09186334..9b19c85b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "5.0.1", + "version": "5.0.2", "description": "CSS minifier with structural optimisations", "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ From 26af9c0a1b246abfb720b7c686b9a6269b2a0b7d Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Tue, 8 Mar 2022 17:44:13 +0100 Subject: [PATCH 21/28] Fix cjs version bundling when `browser` field is used, add `module` field --- CHANGELOG.md | 5 +++++ dist/.gitignore | 1 + dist/.npmignore | 1 + package.json | 5 +++-- scripts/bundle.js | 16 +++++----------- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae9793fa..0a8c0fb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## next + +- Fixed CommonJS version bundling when `browser` field is used +- Added `module` field + ## 5.0.2 (December 17, 2021) - Extended Node.js support to include `^10` diff --git a/dist/.gitignore b/dist/.gitignore index 7e836b16..2f580d81 100644 --- a/dist/.gitignore +++ b/dist/.gitignore @@ -1,4 +1,5 @@ *.js +*.cjs !test/*.js !.gitignore !.npmignore diff --git a/dist/.npmignore b/dist/.npmignore index 2efb8d3b..35cc879c 100644 --- a/dist/.npmignore +++ b/dist/.npmignore @@ -1,4 +1,5 @@ * !csso.js !csso.esm.js +!version.cjs !version.js diff --git a/package.json b/package.json index 9b19c85b..7dd83368 100644 --- a/package.json +++ b/package.json @@ -22,13 +22,14 @@ "csstree" ], "type": "module", - "main": "./cjs/index.cjs", "unpkg": "dist/csso.esm.js", "jsdelivr": "dist/csso.esm.js", "browser": { - "./cjs/version.cjs": "./dist/version.js", + "./cjs/version.cjs": "./dist/version.cjs", "./lib/version.js": "./dist/version.js" }, + "main": "./cjs/index.cjs", + "module": "./lib/index.js", "exports": { ".": { "import": "./lib/index.js", diff --git a/scripts/bundle.js b/scripts/bundle.js index 4c410d1e..c7cc408b 100644 --- a/scripts/bundle.js +++ b/scripts/bundle.js @@ -7,22 +7,15 @@ const { version } = createRequire(import.meta.url)('../package.json'); async function build() { const genModules = { - [resolve('lib/version.js')]: () => `export const version = "${version}";` + [resolve('lib/version.js')]: `export const version = "${version}";`, + [resolve('cjs/version.cjs')]: `module.exports = "${version}";` }; const genModulesFilter = new RegExp('(' + Object.keys(genModules).join('|').replace(/\./g, '\\.') + ')$'); - const genModuleCache = new Map(); - const genModule = (fn) => { - if (!genModuleCache.has(fn)) { - genModuleCache.set(fn, genModules[fn]()); - } - - return genModuleCache.get(fn); - }; const plugins = [{ name: 'replace', setup({ onLoad }) { onLoad({ filter: genModulesFilter }, args => ({ - contents: genModule(args.path) + contents: genModules[args.path] })); } }]; @@ -50,8 +43,9 @@ async function build() { }) ]); - for (const [key, value] of genModuleCache) { + for (const [key, value] of Object.entries(genModules)) { const fn = basename(key); + writeFileSync(`dist/${fn}`, value); } } From 95279ad2a951959386fb13128ee5f0db1fa9b3eb Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 9 Mar 2022 15:03:18 +0100 Subject: [PATCH 22/28] 5.0.3 --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a8c0fb2..48ac9bad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## next +## 5.0.3 (March 9, 2022) - Fixed CommonJS version bundling when `browser` field is used - Added `module` field diff --git a/package-lock.json b/package-lock.json index 585fdf1b..50fcdcdb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "csso", - "version": "5.0.2", + "version": "5.0.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "csso", - "version": "5.0.2", + "version": "5.0.3", "license": "MIT", "dependencies": { "css-tree": "~2.0.4" diff --git a/package.json b/package.json index 7dd83368..810f4e38 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "5.0.2", + "version": "5.0.3", "description": "CSS minifier with structural optimisations", "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ From d0eecfbd29ca9d9af1681bfe6386489b8de74082 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Thu, 14 Jul 2022 10:49:25 +0200 Subject: [PATCH 23/28] Fix usage filtering for from/to selectors in keyframes at-rule (fixes #448) --- CHANGELOG.md | 4 ++++ fixtures/usage/atrule-2.css | 31 +++++++++++++++++++++++++++++++ fixtures/usage/atrule-2.css.usage | 3 +++ fixtures/usage/atrule-2.min.css | 1 + lib/clean/Rule.js | 8 +++++++- 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 fixtures/usage/atrule-2.css create mode 100644 fixtures/usage/atrule-2.css.usage create mode 100644 fixtures/usage/atrule-2.min.css diff --git a/CHANGELOG.md b/CHANGELOG.md index 48ac9bad..e0a09e99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## next + +- Fixed usage filtering for from/to selectors in keyframes at-rule (#448) + ## 5.0.3 (March 9, 2022) - Fixed CommonJS version bundling when `browser` field is used diff --git a/fixtures/usage/atrule-2.css b/fixtures/usage/atrule-2.css new file mode 100644 index 00000000..e4f5cf1d --- /dev/null +++ b/fixtures/usage/atrule-2.css @@ -0,0 +1,31 @@ +/* + should not apply usage filtering to @keyframes & @page at-rules +*/ + +used1 { color: green } +unused { color: red } +used2 { color: green } +@page left { + margin: 5; + @top-center { + content: "text"; + } +} +@keyframes test { + from { color: blue } + to { color: yellow } +} +@-webkit-keyframes test { + from { color: blue } + to { color: yellow } +} +@media some-used { + used2 { color: green } + from { color: red } + unused { color: red } + used1 { color: green } +} +@media all-unused { + from { color: red } + unused { color: red } +} diff --git a/fixtures/usage/atrule-2.css.usage b/fixtures/usage/atrule-2.css.usage new file mode 100644 index 00000000..5a8eabfb --- /dev/null +++ b/fixtures/usage/atrule-2.css.usage @@ -0,0 +1,3 @@ +{ + "tags": ["used1", "used2"] +} diff --git a/fixtures/usage/atrule-2.min.css b/fixtures/usage/atrule-2.min.css new file mode 100644 index 00000000..446c36a2 --- /dev/null +++ b/fixtures/usage/atrule-2.min.css @@ -0,0 +1 @@ +@keyframes test{0%{color:#00f}to{color:#ff0}}@-webkit-keyframes test{0%{color:#00f}to{color:#ff0}}used1,used2{color:green}@page left{margin:5;@top-center{content:"text"}}@media some-used{used1,used2{color:green}} diff --git a/lib/clean/Rule.js b/lib/clean/Rule.js index d2d70dcc..c4b02d2f 100644 --- a/lib/clean/Rule.js +++ b/lib/clean/Rule.js @@ -1,7 +1,8 @@ -import { walk } from 'css-tree'; +import { walk, keyword } from 'css-tree'; import { hasNoChildren } from './utils.js'; const { hasOwnProperty } = Object.prototype; +const skipUsageFilteringAtrule = new Set(['keyframes']); function cleanUnused(selectorList, usageData) { selectorList.children.forEach((selector, item, list) => { @@ -81,6 +82,11 @@ export default function cleanRule(node, item, list, options) { return; } + // avoid usage filtering for some at-rules + if (this.atrule && skipUsageFilteringAtrule.has(keyword(this.atrule.name).basename)) { + return; + } + const { usage } = options; if (usage && (usage.whitelist !== null || usage.blacklist !== null)) { From c4cad092ee4845002fa71a8c5b4d61c6c20d4b0a Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Thu, 14 Jul 2022 11:40:20 +0200 Subject: [PATCH 24/28] Fix removing `medium` in `font` declarations (fixes #449) --- CHANGELOG.md | 1 + fixtures/compress/initial.font.min.css | 2 +- lib/replace/property/font.js | 6 ------ 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0a09e99..7930b981 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## next - Fixed usage filtering for from/to selectors in keyframes at-rule (#448) +- Fixed removing `medium` in `font` declaration since it breaks the value since `` is required ## 5.0.3 (March 9, 2022) diff --git a/fixtures/compress/initial.font.min.css b/fixtures/compress/initial.font.min.css index 83ea6453..bbd12a75 100644 --- a/fixtures/compress/initial.font.min.css +++ b/fixtures/compress/initial.font.min.css @@ -1 +1 @@ -.a{font:600 9px Charcoal}.b{font:500 Charcoal}.c{font:400 Charcoal}.d{font:500 medium/10px Charcoal}.e{font:normal}.f{font:700}.g{font:normal} +.a{font:600 9px Charcoal}.b{font:500 medium Charcoal}.c{font:400 medium Charcoal}.d{font:500 medium/10px Charcoal}.e{font:normal}.f{font:700}.g{font:medium} diff --git a/lib/replace/property/font.js b/lib/replace/property/font.js index 1131bc6a..38e903a2 100644 --- a/lib/replace/property/font.js +++ b/lib/replace/property/font.js @@ -17,12 +17,6 @@ export default function compressFont(node) { } this.remove(item); - } else if (node.name === 'medium') { - const next = item.next; - - if (!next || next.data.type !== 'Operator') { - this.remove(item); - } } } }); From 94fcfa0282d1f363e661eeca27af5e09289bcc14 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Thu, 14 Jul 2022 13:00:24 +0200 Subject: [PATCH 25/28] 5.0.4 --- CHANGELOG.md | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7930b981..d311963c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ -## next +## 5.0.4 (July 14, 2022) - Fixed usage filtering for from/to selectors in keyframes at-rule (#448) -- Fixed removing `medium` in `font` declaration since it breaks the value since `` is required +- Fixed removing `medium` in `font` declarations since it breaks the value since `` is required (#449) ## 5.0.3 (March 9, 2022) diff --git a/package-lock.json b/package-lock.json index 50fcdcdb..6d3061ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "csso", - "version": "5.0.3", + "version": "5.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "csso", - "version": "5.0.3", + "version": "5.0.4", "license": "MIT", "dependencies": { "css-tree": "~2.0.4" diff --git a/package.json b/package.json index 810f4e38..1dcd0dd8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "5.0.3", + "version": "5.0.4", "description": "CSS minifier with structural optimisations", "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ From 1ff2dabbeb122dc5b3e55e0486cc5d2326ba7305 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 10 Aug 2022 19:32:06 +0200 Subject: [PATCH 26/28] Bump css-tree and some other deps --- CHANGELOG.md | 4 + package-lock.json | 677 ++++++++++++++++++++++++++++------------------ package.json | 6 +- 3 files changed, 416 insertions(+), 271 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d311963c..a053dec8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## next + +- Bumped `css-tree` to `~2.2.0` + ## 5.0.4 (July 14, 2022) - Fixed usage filtering for from/to selectors in keyframes at-rule (#448) diff --git a/package-lock.json b/package-lock.json index 6d3061ab..2f427e76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,13 +9,13 @@ "version": "5.0.4", "license": "MIT", "dependencies": { - "css-tree": "~2.0.4" + "css-tree": "~2.2.0" }, "devDependencies": { "c8": "^7.10.0", - "esbuild": "^0.14.1", + "esbuild": "^0.14.54", "eslint": "^7.24.0", - "mocha": "^9.1.2", + "mocha": "^9.2.2", "rollup": "^2.60.2", "source-map-js": "^1.0.1" }, @@ -133,6 +133,22 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -399,10 +415,16 @@ } }, "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -478,11 +500,11 @@ } }, "node_modules/css-tree": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz", - "integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.0.tgz", + "integrity": "sha512-7y32czN0VBL8WkevhC/mrHnoHOmQaJ1Wvp8sjRuTz6/n9cjL83jQaUru2MvP7kzjpGVwrSy5CE4XyQObWGIHQQ==", "dependencies": { - "mdn-data": "2.0.23", + "mdn-data": "2.0.28", "source-map-js": "^1.0.1" }, "engines": { @@ -553,38 +575,61 @@ } }, "node_modules/esbuild": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.1.tgz", - "integrity": "sha512-J/LhUwELcmz0+CJfiaKzu7Rnj9ffWFLvMx+dKvdOfg+fQmoP6q9glla26LCm9BxpnPUjXChHeubLiMlKab/PYg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, + "engines": { + "node": ">=12" + }, "optionalDependencies": { - "esbuild-android-arm64": "0.14.1", - "esbuild-darwin-64": "0.14.1", - "esbuild-darwin-arm64": "0.14.1", - "esbuild-freebsd-64": "0.14.1", - "esbuild-freebsd-arm64": "0.14.1", - "esbuild-linux-32": "0.14.1", - "esbuild-linux-64": "0.14.1", - "esbuild-linux-arm": "0.14.1", - "esbuild-linux-arm64": "0.14.1", - "esbuild-linux-mips64le": "0.14.1", - "esbuild-linux-ppc64le": "0.14.1", - "esbuild-netbsd-64": "0.14.1", - "esbuild-openbsd-64": "0.14.1", - "esbuild-sunos-64": "0.14.1", - "esbuild-windows-32": "0.14.1", - "esbuild-windows-64": "0.14.1", - "esbuild-windows-arm64": "0.14.1" + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.1.tgz", - "integrity": "sha512-elQd3hTg93nU2GQ5PPCDAFe5+utxZX96RG8RixqIPxf8pzmyIzcpKG76L/9FabPf3LT1z+nLF1sajCU8eVRDyg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "cpu": [ "arm64" ], @@ -592,12 +637,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.1.tgz", - "integrity": "sha512-PR3HZgbPRwsQbbOR1fJrfkt/Cs0JDyI3yzOKg2PPWk0H1AseZDBqPUY9b/0+BIjFwA5Jz/aAiq832hppsuJtNw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "cpu": [ "x64" ], @@ -605,12 +653,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.1.tgz", - "integrity": "sha512-/fiSSOkOEa3co6yYtwgXouz8jZrG0qnXPEKiktFf2BQE8NON3ARTw43ZegaH+xMRFNgYBJEOOZIdzI3sIFEAxw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "cpu": [ "arm64" ], @@ -618,12 +669,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.1.tgz", - "integrity": "sha512-ZJV+nfa8E8PdXnRc05PO3YMfgSj7Ko+kdHyGDE6OaNo1cO8ZyfacqLaWkY35shDDaeacklhD8ZR4qq5nbJKX1A==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "cpu": [ "x64" ], @@ -631,12 +685,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.1.tgz", - "integrity": "sha512-6N9zTD+SecJr2g9Ohl9C10WIk5FpQ+52bNamRy0sJoHwP31G5ObzKzq8jAtg1Jeggpu6P8auz3P/UL+3YioSwQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "cpu": [ "arm64" ], @@ -644,12 +701,15 @@ "optional": true, "os": [ "freebsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-32": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.1.tgz", - "integrity": "sha512-RtPgE6e7WefbAxRjVryisKFJ0nUwR2DMjwmYW/a1a0F1+Ge6FR+RqvgiY0DrM9TtxSUU0eryDXNF4n3UfxX3mg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "cpu": [ "ia32" ], @@ -657,12 +717,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.1.tgz", - "integrity": "sha512-JpxM0ar6Z+2v3vfFrxP7bFb8Wzb6gcGL9MxRqAJplDfGnee8HbfPge6svaazXeX9XJceeEqwxwWGB0qyCcxo7A==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "cpu": [ "x64" ], @@ -670,12 +733,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.1.tgz", - "integrity": "sha512-eBRHexCijAYWzcvQLGHxyxIlYOkYhXvcb/O7HvzJfCAVWCnTx9TxxYJ3UppBC6dDFbAq4HwKhskvmesQdKMeBg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "cpu": [ "arm" ], @@ -683,12 +749,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.1.tgz", - "integrity": "sha512-cFbeZf171bIf+PPLlQDBzagK85lCCxxVdMV1IVUA96Y3kvEgqcy2n9mha+QE1M/T+lIOPDsmLRgH1XqMFwLTSg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "cpu": [ "arm64" ], @@ -696,12 +765,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.1.tgz", - "integrity": "sha512-UGb+sqHkL7wOQFLH0RoFhcRAlJNqbqs6GtJd1It5jJ2juOGqAkCv8V12aGDX9oRB6a+Om7cdHcH+6AMZ+qlaww==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "cpu": [ "mips64el" ], @@ -709,12 +781,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.1.tgz", - "integrity": "sha512-LIHGkGdy9wYlmkkoVHm6feWhkoi4VBXDiEVyNjXEhlzsBcP/CaRy+B8IJulzaU1ALLiGcsCQ2MC5UbFn/iTvmA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", "cpu": [ "ppc64" ], @@ -722,12 +797,47 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.1.tgz", - "integrity": "sha512-TWc1QIgtPwaK5nC1GT2ASTuy/CJhNKHN4h5PJRP1186VfI+k2uvXakS7bqO/M26F6jAMy8jDeCtilacqpwsvfA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "cpu": [ "x64" ], @@ -735,12 +845,15 @@ "optional": true, "os": [ "netbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.1.tgz", - "integrity": "sha512-Z9/Zb77K+pK9s7mAsvwS56K8tCbLvNZ9UI4QVJSYqDgOmmDJOBT4owWnCqZ5cJI+2y4/F9KwCpFFTNUdPglPKA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "cpu": [ "x64" ], @@ -748,12 +861,15 @@ "optional": true, "os": [ "openbsd" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.1.tgz", - "integrity": "sha512-c4sF8146kNW8529wfkB6vO0ZqPgokyS2hORqKa4p/QKZdp+xrF2NPmvX5aN+Zt14oe6wVZuhYo6LGv7V4Gg04g==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "cpu": [ "x64" ], @@ -761,12 +877,15 @@ "optional": true, "os": [ "sunos" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-32": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.1.tgz", - "integrity": "sha512-XP8yElaJtLGGjH7D72t5IWtP0jmc1Jqm4IjQARB17l0LTJO/n+N2X64rDWePJv6qimYxa5p2vTjkZc5v+YZTSQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "cpu": [ "ia32" ], @@ -774,12 +893,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.1.tgz", - "integrity": "sha512-fe+ShdyfiuGcCEdVKW//6MaM4MwikiWBWSBn8mebNAbjRqicH0injDOFVI7aUovAfrEt7+FGkf402s//hi0BVg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "cpu": [ "x64" ], @@ -787,12 +909,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.1.tgz", - "integrity": "sha512-wBVakhcIzQ3NZ33DFM6TjIObXPHaXOsqzvPwefXHvwBSC/N/e/g6fBeM7N/Moj3AmxLjKaB+vePvTGdxk6RPCg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "cpu": [ "arm64" ], @@ -800,7 +925,10 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=12" + } }, "node_modules/escalade": { "version": "3.1.1", @@ -1157,9 +1285,9 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1524,9 +1652,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz", - "integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==" + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" }, "node_modules/minimatch": { "version": "3.0.4", @@ -1541,32 +1669,32 @@ } }, "node_modules/mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -1589,29 +1717,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/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 - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1624,6 +1729,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -1652,9 +1769,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -1774,9 +1891,9 @@ } }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -2197,9 +2314,9 @@ } }, "node_modules/workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "node_modules/wrap-ansi": { @@ -2410,6 +2527,13 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, "@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -2615,9 +2739,9 @@ } }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -2683,11 +2807,11 @@ } }, "css-tree": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz", - "integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.0.tgz", + "integrity": "sha512-7y32czN0VBL8WkevhC/mrHnoHOmQaJ1Wvp8sjRuTz6/n9cjL83jQaUru2MvP7kzjpGVwrSy5CE4XyQObWGIHQQ==", "requires": { - "mdn-data": "2.0.23", + "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, @@ -2737,146 +2861,171 @@ } }, "esbuild": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.1.tgz", - "integrity": "sha512-J/LhUwELcmz0+CJfiaKzu7Rnj9ffWFLvMx+dKvdOfg+fQmoP6q9glla26LCm9BxpnPUjXChHeubLiMlKab/PYg==", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.14.1", - "esbuild-darwin-64": "0.14.1", - "esbuild-darwin-arm64": "0.14.1", - "esbuild-freebsd-64": "0.14.1", - "esbuild-freebsd-arm64": "0.14.1", - "esbuild-linux-32": "0.14.1", - "esbuild-linux-64": "0.14.1", - "esbuild-linux-arm": "0.14.1", - "esbuild-linux-arm64": "0.14.1", - "esbuild-linux-mips64le": "0.14.1", - "esbuild-linux-ppc64le": "0.14.1", - "esbuild-netbsd-64": "0.14.1", - "esbuild-openbsd-64": "0.14.1", - "esbuild-sunos-64": "0.14.1", - "esbuild-windows-32": "0.14.1", - "esbuild-windows-64": "0.14.1", - "esbuild-windows-arm64": "0.14.1" - } + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true }, "esbuild-android-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.1.tgz", - "integrity": "sha512-elQd3hTg93nU2GQ5PPCDAFe5+utxZX96RG8RixqIPxf8pzmyIzcpKG76L/9FabPf3LT1z+nLF1sajCU8eVRDyg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.1.tgz", - "integrity": "sha512-PR3HZgbPRwsQbbOR1fJrfkt/Cs0JDyI3yzOKg2PPWk0H1AseZDBqPUY9b/0+BIjFwA5Jz/aAiq832hppsuJtNw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.1.tgz", - "integrity": "sha512-/fiSSOkOEa3co6yYtwgXouz8jZrG0qnXPEKiktFf2BQE8NON3ARTw43ZegaH+xMRFNgYBJEOOZIdzI3sIFEAxw==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.1.tgz", - "integrity": "sha512-ZJV+nfa8E8PdXnRc05PO3YMfgSj7Ko+kdHyGDE6OaNo1cO8ZyfacqLaWkY35shDDaeacklhD8ZR4qq5nbJKX1A==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.1.tgz", - "integrity": "sha512-6N9zTD+SecJr2g9Ohl9C10WIk5FpQ+52bNamRy0sJoHwP31G5ObzKzq8jAtg1Jeggpu6P8auz3P/UL+3YioSwQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.1.tgz", - "integrity": "sha512-RtPgE6e7WefbAxRjVryisKFJ0nUwR2DMjwmYW/a1a0F1+Ge6FR+RqvgiY0DrM9TtxSUU0eryDXNF4n3UfxX3mg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.1.tgz", - "integrity": "sha512-JpxM0ar6Z+2v3vfFrxP7bFb8Wzb6gcGL9MxRqAJplDfGnee8HbfPge6svaazXeX9XJceeEqwxwWGB0qyCcxo7A==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.1.tgz", - "integrity": "sha512-eBRHexCijAYWzcvQLGHxyxIlYOkYhXvcb/O7HvzJfCAVWCnTx9TxxYJ3UppBC6dDFbAq4HwKhskvmesQdKMeBg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.1.tgz", - "integrity": "sha512-cFbeZf171bIf+PPLlQDBzagK85lCCxxVdMV1IVUA96Y3kvEgqcy2n9mha+QE1M/T+lIOPDsmLRgH1XqMFwLTSg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.1.tgz", - "integrity": "sha512-UGb+sqHkL7wOQFLH0RoFhcRAlJNqbqs6GtJd1It5jJ2juOGqAkCv8V12aGDX9oRB6a+Om7cdHcH+6AMZ+qlaww==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.1.tgz", - "integrity": "sha512-LIHGkGdy9wYlmkkoVHm6feWhkoi4VBXDiEVyNjXEhlzsBcP/CaRy+B8IJulzaU1ALLiGcsCQ2MC5UbFn/iTvmA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.1.tgz", - "integrity": "sha512-TWc1QIgtPwaK5nC1GT2ASTuy/CJhNKHN4h5PJRP1186VfI+k2uvXakS7bqO/M26F6jAMy8jDeCtilacqpwsvfA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.1.tgz", - "integrity": "sha512-Z9/Zb77K+pK9s7mAsvwS56K8tCbLvNZ9UI4QVJSYqDgOmmDJOBT4owWnCqZ5cJI+2y4/F9KwCpFFTNUdPglPKA==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.1.tgz", - "integrity": "sha512-c4sF8146kNW8529wfkB6vO0ZqPgokyS2hORqKa4p/QKZdp+xrF2NPmvX5aN+Zt14oe6wVZuhYo6LGv7V4Gg04g==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.1.tgz", - "integrity": "sha512-XP8yElaJtLGGjH7D72t5IWtP0jmc1Jqm4IjQARB17l0LTJO/n+N2X64rDWePJv6qimYxa5p2vTjkZc5v+YZTSQ==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.1.tgz", - "integrity": "sha512-fe+ShdyfiuGcCEdVKW//6MaM4MwikiWBWSBn8mebNAbjRqicH0injDOFVI7aUovAfrEt7+FGkf402s//hi0BVg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.1.tgz", - "integrity": "sha512-wBVakhcIzQ3NZ33DFM6TjIObXPHaXOsqzvPwefXHvwBSC/N/e/g6fBeM7N/Moj3AmxLjKaB+vePvTGdxk6RPCg==", + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "dev": true, "optional": true }, @@ -3148,9 +3297,9 @@ "dev": true }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3418,9 +3567,9 @@ } }, "mdn-data": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz", - "integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==" + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" }, "minimatch": { "version": "3.0.4", @@ -3432,32 +3581,32 @@ } }, "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -3469,23 +3618,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "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 - } - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3495,6 +3627,15 @@ "argparse": "^2.0.1" } }, + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3519,9 +3660,9 @@ "dev": true }, "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "natural-compare": { @@ -3605,9 +3746,9 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "prelude-ls": { @@ -3914,9 +4055,9 @@ "dev": true }, "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index 1dcd0dd8..c03e2a4c 100644 --- a/package.json +++ b/package.json @@ -59,13 +59,13 @@ "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null" }, "dependencies": { - "css-tree": "~2.0.4" + "css-tree": "~2.2.0" }, "devDependencies": { "c8": "^7.10.0", - "esbuild": "^0.14.1", + "esbuild": "^0.14.54", "eslint": "^7.24.0", - "mocha": "^9.1.2", + "mocha": "^9.2.2", "rollup": "^2.60.2", "source-map-js": "^1.0.1" }, From 1ebc6709119284e3e1cd6d0b8d6c94074bb40921 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Wed, 10 Aug 2022 19:40:31 +0200 Subject: [PATCH 27/28] 5.0.5 --- CHANGELOG.md | 4 ++-- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a053dec8..7325392b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ -## next +## 5.0.5 (August 10, 2022) -- Bumped `css-tree` to `~2.2.0` +- Bumped `css-tree` to `~2.2.0` (#458) ## 5.0.4 (July 14, 2022) diff --git a/package-lock.json b/package-lock.json index 2f427e76..33b90bc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "5.0.4", + "version": "5.0.5", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index c03e2a4c..1920d8fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "csso", - "version": "5.0.4", + "version": "5.0.5", "description": "CSS minifier with structural optimisations", "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ From 221c9a7145721362ae98ef0313cef4f60dbfa65a Mon Sep 17 00:00:00 2001 From: Vladimir Grinenko Date: Wed, 15 Feb 2023 22:29:51 +0600 Subject: [PATCH 28/28] Remove mentions of skryzhanovsky@ (#466) --- .gh-pages/index.html | 19 +++++++++---------- docs/index/index.en.md | 3 --- docs/index/index.ja.md | 3 --- docs/index/index.ko.md | 3 --- docs/index/index.pt-br.md | 3 --- docs/index/index.ru.md | 3 --- package.json | 1 - 7 files changed, 9 insertions(+), 26 deletions(-) diff --git a/.gh-pages/index.html b/.gh-pages/index.html index d1de06f3..3ef6c9d8 100644 --- a/.gh-pages/index.html +++ b/.gh-pages/index.html @@ -13,26 +13,26 @@ font-family: Helvetica, Arial, FreeSans, san-serif; color: #000000; } - + #container { margin: 0 auto; width: 700px; } - + h1 { font-size: 3.8em; color: #000000; margin-bottom: 3px; } - + h1 .small { font-size: 0.4em; } - + h1 a { text-decoration: none } - + h2 { margin-top: 2em; font-size: 1.5em; @@ -42,24 +42,24 @@ a { color: #000000; } - + .description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic; } - + .download { float: right; } - + pre { background: #000; color: #fff; padding: 15px; } - + .tryit { font-size: 150%; text-align: center; @@ -109,7 +109,6 @@

Maintainers

Authors

Initial idea — Vitaly Harisov (vitaly@harisov.name)
- Implementation — Sergey Kryzhanovsky (skryzhanovsky@ya.ru)
English translation — Leonid Khachaturov (leonidkhachaturov@gmail.com)

diff --git a/docs/index/index.en.md b/docs/index/index.en.md index 4679e41a..cd62ca66 100644 --- a/docs/index/index.en.md +++ b/docs/index/index.en.md @@ -30,7 +30,6 @@ The minification techniques are described in detail in the [detailed description ## Authors * initial idea — Vitaly Harisov () -* implementation — Sergey Kryzhanovsky () * english translation — Leonid Khachaturov () * japanese translation — Koji Ishimoto () * korean translation — Wankyu Kim () @@ -39,8 +38,6 @@ The minification techniques are described in detail in the [detailed description Please report issues on [Github](https://github.com/css/csso/issues). -For feedback, suggestions, etc. write to . - ## License * CSSO is licensed under [MIT](https://github.com/css/csso/blob/master/MIT-LICENSE.txt) diff --git a/docs/index/index.ja.md b/docs/index/index.ja.md index 4cca211a..590d5b09 100644 --- a/docs/index/index.ja.md +++ b/docs/index/index.ja.md @@ -30,7 +30,6 @@ CSSO (CSSオプティマイザー)は、他とは違ったCSS縮小化ツール # 著者 * 発案 — Vitaly Harisov () -* 実装 — Sergey Kryzhanovsky () * 英語翻訳 — Leonid Khachaturov () * 日本語翻訳 — Koji Ishimoto () * 韓国語翻訳 — Wankyu Kim () @@ -39,8 +38,6 @@ CSSO (CSSオプティマイザー)は、他とは違ったCSS縮小化ツール 問題の報告は [Github](https://github.com/css/csso/issues) まで。 -フィードバック、提案、その他は まで。 - # ライセンス * CSSOは [MIT](https://github.com/css/csso/blob/master/MIT-LICENSE.txt) ライセンスに基づいています。 diff --git a/docs/index/index.ko.md b/docs/index/index.ko.md index 216aaed1..8a874e4a 100644 --- a/docs/index/index.ko.md +++ b/docs/index/index.ko.md @@ -30,7 +30,6 @@ CSSO (CSS Optimizer)는 다른 CSS압축툴과는 다릅니다. 일반적인 압 # 저자 * 초안 — Vitaly Harisov () -* 구현 — Sergey Kryzhanovsky () * 영어 번역 — Leonid Khachaturov () * 일본어 번역 — Koji Ishimoto () * 한국어 번역 — Wankyu Kim () @@ -39,8 +38,6 @@ CSSO (CSS Optimizer)는 다른 CSS압축툴과는 다릅니다. 일반적인 압 문제가 있을 경우 [Github](https://github.com/css/csso/issues)에 올려주시기 바랍니다. -피드백, 제안 등은 로 전달바랍니다. - # 라이센스 * CSSO는 [MIT](https://github.com/css/csso/blob/master/MIT-LICENSE.txt)라이센스를 따릅니다. diff --git a/docs/index/index.pt-br.md b/docs/index/index.pt-br.md index de156dee..14fddf20 100644 --- a/docs/index/index.pt-br.md +++ b/docs/index/index.pt-br.md @@ -30,7 +30,6 @@ As técnicas de minificação são descritas em detalhes em [descrição detalha ## Autores * Ideia inicial — Vitaly Harisov () -* Implementação — Sergey Kryzhanovsky () * Tradução Inglês — Leonid Khachaturov () * Tradução Japonês — Koji Ishimoto () * Tradução Coreano — Wankyu Kim () @@ -40,8 +39,6 @@ As técnicas de minificação são descritas em detalhes em [descrição detalha Por favor, reporte problemas no [Github](https://github.com/css/csso/issues). -Para comentários, sugestões, etc. Escreva para . - ## Licença * CSSO é licenciado por [MIT](https://github.com/css/csso/blob/master/MIT-LICENSE.txt) diff --git a/docs/index/index.ru.md b/docs/index/index.ru.md index c60508ce..628c0b6c 100644 --- a/docs/index/index.ru.md +++ b/docs/index/index.ru.md @@ -30,7 +30,6 @@ CSSO (CSS Optimizer) является минимизатором CSS, выпол ## Авторы * идея и поддержка — Виталий Харисов () -* реализация — Сергей Крыжановский () * перевод на английский язык — Leonid Khachaturov () * перевод на корейский язык — Wankyu Kim () @@ -38,8 +37,6 @@ CSSO (CSS Optimizer) является минимизатором CSS, выпол Замеченные ошибки лучше добавлять в [Issues](https://github.com/css/csso/issues) проекта. -Советы, предложения, отзывы, а также ошибки, которые почему-то лучше выслать письмом, высылайте на адрес . - ## Лицензия * CSSO распространяется под [лицензией MIT](https://github.com/css/csso/blob/master/MIT-LICENSE.txt) diff --git a/package.json b/package.json index 1920d8fd..ec838ecf 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,6 @@ "name": "csso", "version": "5.0.5", "description": "CSS minifier with structural optimisations", - "author": "Sergey Kryzhanovsky (https://github.com/afelix)", "maintainers": [ { "name": "Roman Dvornov",