Mirror: CSS prefixing helpers in less than 1KB ๐ŸŒˆ

Compare changes

Choose any two refs to compare.

+26
.github/workflows/mirror.yml
···
··· 1 + # Mirrors to https://tangled.sh/@kitten.sh (knot.kitten.sh) 2 + name: Mirror (Git Backup) 3 + on: 4 + push: 5 + branches: 6 + - main 7 + jobs: 8 + mirror: 9 + runs-on: ubuntu-latest 10 + steps: 11 + - name: Checkout repository 12 + uses: actions/checkout@v4 13 + with: 14 + fetch-depth: 0 15 + fetch-tags: true 16 + - name: Mirror 17 + env: 18 + MIRROR_SSH_KEY: ${{ secrets.MIRROR_SSH_KEY }} 19 + GIT_SSH_COMMAND: 'ssh -o StrictHostKeyChecking=yes' 20 + run: | 21 + mkdir -p ~/.ssh 22 + echo "$MIRROR_SSH_KEY" > ~/.ssh/id_rsa 23 + chmod 600 ~/.ssh/id_rsa 24 + ssh-keyscan -H knot.kitten.sh >> ~/.ssh/known_hosts 25 + git remote add mirror "git@knot.kitten.sh:kitten.sh/${GITHUB_REPOSITORY#*/}" 26 + git push --mirror mirror
+9
README.md
··· 38 return css; 39 }; 40 ```
··· 38 return css; 39 }; 40 ``` 41 + 42 + Additionally `prefixValue` can accept full declarations to avoid 43 + having to apply it before concatenation, which can be useful in case 44 + you're trying to minimise string operations: 45 + 46 + ```js 47 + const declaration = 'position: sticky'; 48 + prefixValue(declaration, declaration); // 'position: -webkit-sticky, sticky' 49 + ```
+12 -2
package.json
··· 1 { 2 "name": "tiny-css-prefixer", 3 "description": "CSS prefixing helpers in less than 1KB", 4 - "version": "1.1.1", 5 "main": "dist/tiny-css-prefixer.js", 6 "module": "dist/tiny-css-prefixer.es.js", 7 "source": "src/index.js", 8 "types": "src/index.d.ts", 9 "author": "Phil Pluckthun <phil@kitten.sh>", 10 "license": "MIT", 11 "files": [ 12 "*.md", 13 "dist", ··· 24 "@rollup/plugin-commonjs": "^11.0.1", 25 "@rollup/plugin-node-resolve": "^7.0.0", 26 "babel-plugin-codegen": "^3.1.0", 27 - "codegen.macro": "^3.0.0", 28 "inline-style-prefixer": "^5.1.0", 29 "mdn-data": "^2.0.6", 30 "npm-run-all": "^4.1.5", 31 "rollup": "^1.29.0", 32 "rollup-plugin-babel": "^4.3.3", 33 "rollup-plugin-terser": "^5.2.0" 34 } 35 }
··· 1 { 2 "name": "tiny-css-prefixer", 3 "description": "CSS prefixing helpers in less than 1KB", 4 + "version": "1.1.4", 5 "main": "dist/tiny-css-prefixer.js", 6 "module": "dist/tiny-css-prefixer.es.js", 7 "source": "src/index.js", 8 "types": "src/index.d.ts", 9 + "sideEffects": false, 10 "author": "Phil Pluckthun <phil@kitten.sh>", 11 "license": "MIT", 12 + "keywords": [ 13 + "css", 14 + "prefixer", 15 + "autoprefixer" 16 + ], 17 + "repository": "https://github.com/kitten/tiny-css-prefixer", 18 + "bugs": { 19 + "url": "https://github.com/kitten/tiny-css-prefixer/issues" 20 + }, 21 "files": [ 22 "*.md", 23 "dist", ··· 34 "@rollup/plugin-commonjs": "^11.0.1", 35 "@rollup/plugin-node-resolve": "^7.0.0", 36 "babel-plugin-codegen": "^3.1.0", 37 "inline-style-prefixer": "^5.1.0", 38 "mdn-data": "^2.0.6", 39 "npm-run-all": "^4.1.5", 40 "rollup": "^1.29.0", 41 "rollup-plugin-babel": "^4.3.3", 42 + "rollup-plugin-filesize": "6.2.1", 43 "rollup-plugin-terser": "^5.2.0" 44 } 45 }
+5
rollup.config.js
··· 3 import buble from '@rollup/plugin-buble'; 4 import babel from 'rollup-plugin-babel'; 5 import { terser } from 'rollup-plugin-terser'; 6 7 const terserMinified = terser({ 8 sourcemap: false, ··· 70 esModule: false, 71 file: `./dist/tiny-css-prefixer.es.js`, 72 format: 'esm', 73 }, 74 ], 75 };
··· 3 import buble from '@rollup/plugin-buble'; 4 import babel from 'rollup-plugin-babel'; 5 import { terser } from 'rollup-plugin-terser'; 6 + import filesize from 'rollup-plugin-filesize'; 7 + 8 9 const terserMinified = terser({ 10 sourcemap: false, ··· 72 esModule: false, 73 file: `./dist/tiny-css-prefixer.es.js`, 74 format: 'esm', 75 + plugins: [ 76 + filesize() 77 + ] 78 }, 79 ], 80 };
+28 -18
scripts/generate-prefix-map.js
··· 49 // NOTE: Their variants with before/after are not supported 50 // by Firefox and should be avoided 51 properties.push(...[ 52 - 'margin-start', 53 - 'margin-end', 54 - 'padding-start', 55 - 'padding-end', 56 'border-start', 57 'border-start-color', 58 'border-start-style', ··· 83 !properties.some(({ name }) => name === x) 84 )); 85 86 - /** Lists each prefixed property with the minimum substring that is needed to uniquely identity it */ 87 - const prefixPatterns = properties 88 - .map(prop => { 89 - let name = prop.name; 90 - for (let i = 2, l = name.length; i < l; i++) { 91 - const substr = name.slice(0, i); 92 - // Check for any name that conflicts with the substring in all known CSS properties 93 - if (stablePropertyNames.every(x => x === name || !x.startsWith(substr))) { 94 - name = substr; 95 - break; 96 - } 97 } 98 99 - return { ...prop, name }; 100 - }); 101 102 /** Accepts a filter and builds a list of names in `prefixPatterns` */ 103 const reducePrefixes = (filter = x => !!x) => { ··· 106 return acc; 107 }, new Set()); 108 109 - return [...set].sort(); 110 }; 111 112 const buildRegex = groups => `^(${groups.join('|')})`; 113 114 // Create all prefix sets for each prefix ··· 116 const mozPrefixes = buildRegex(reducePrefixes(x => x.moz)); 117 const webkitPrefixes = buildRegex(reducePrefixes(x => x.webkit)); 118 119 module.exports = ` 120 var msPrefixRe = /${msPrefixes}/; 121 var mozPrefixRe = /${mozPrefixes}/; 122 var webkitPrefixRe = /${webkitPrefixes}/; 123 `.trim();
··· 49 // NOTE: Their variants with before/after are not supported 50 // by Firefox and should be avoided 51 properties.push(...[ 52 'border-start', 53 'border-start-color', 54 'border-start-style', ··· 79 !properties.some(({ name }) => name === x) 80 )); 81 82 + /** Finds the minimum starting substring that uniquely identifier a property out of all known CSS properties */ 83 + const findMinimumSubstr = name => { 84 + for (let i = 2, l = name.length; i < l; i++) { 85 + const substr = name.slice(0, i); 86 + // Check for any name that conflicts with the substring in all known CSS properties 87 + if (stablePropertyNames.every(x => x === name || !x.startsWith(substr))) { 88 + return substr; 89 } 90 + } 91 92 + return name; 93 + }; 94 + 95 + /** Lists each prefixed property with the minimum substring that is needed to uniquely identity it */ 96 + const prefixPatterns = properties.map(prop => ({ 97 + ...prop, 98 + name: findMinimumSubstr(prop.name) 99 + })); 100 + 101 + /** For Webkit prefixes, these properties will need some values to be prefixed */ 102 + const prefixValuePatterns = ['position', 'background-clip'].map(findMinimumSubstr); 103 104 /** Accepts a filter and builds a list of names in `prefixPatterns` */ 105 const reducePrefixes = (filter = x => !!x) => { ··· 108 return acc; 109 }, new Set()); 110 111 + return [...set].sort((a, b) => { 112 + if (a.length === b.length) return a.localeCompare(b); 113 + return a.length - b.length; 114 + }); 115 }; 116 117 + /** Creates a regex matching property names */ 118 const buildRegex = groups => `^(${groups.join('|')})`; 119 120 // Create all prefix sets for each prefix ··· 122 const mozPrefixes = buildRegex(reducePrefixes(x => x.moz)); 123 const webkitPrefixes = buildRegex(reducePrefixes(x => x.webkit)); 124 125 + // Create a regex for webkit value transforms 126 + const webkitValuePrefix = buildRegex(prefixValuePatterns); 127 + 128 module.exports = ` 129 var msPrefixRe = /${msPrefixes}/; 130 var mozPrefixRe = /${mozPrefixes}/; 131 var webkitPrefixRe = /${webkitPrefixes}/; 132 + var webkitValuePrefixRe = /${webkitValuePrefix}/; 133 `.trim();
+5 -8
src/index.js
··· 7 8 export const prefixProperty = prop => { 9 if (cache[prop]) return cache[prop]; 10 - return (cache[prop] = (msPrefixRe.test(prop) ? ms : 0) 11 - | (mozPrefixRe.test(prop) ? moz : 0) 12 - | (webkitPrefixRe.test(prop) ? webkit : 0)); 13 }; 14 15 export const prefixValue = (prop, value) => { 16 - if ( 17 - (prop === 'position' && value === 'sticky') || 18 - (prop === 'background-clip' && value === 'text') 19 - ) { 20 - return `-webkit-${value}, ${value}`; 21 } 22 23 return value;
··· 7 8 export const prefixProperty = prop => { 9 if (cache[prop]) return cache[prop]; 10 + return (cache[prop] = (ms * msPrefixRe.test(prop)) 11 + | (moz * mozPrefixRe.test(prop)) 12 + | (webkit * webkitPrefixRe.test(prop))); 13 }; 14 15 export const prefixValue = (prop, value) => { 16 + if (webkitValuePrefixRe.test(prop)) { 17 + return value.replace(/(sticky|text)/, '-webkit-$1, $1'); 18 } 19 20 return value;
+207 -6
yarn.lock
··· 178 dependencies: 179 magic-string "^0.25.0" 180 181 "@types/estree@*": 182 version "0.0.42" 183 resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.42.tgz#8d0c1f480339efedb3e46070e22dd63e0430dd11" ··· 225 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" 226 integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== 227 228 ansi-styles@^3.2.1: 229 version "3.2.1" 230 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" ··· 232 dependencies: 233 color-convert "^1.9.0" 234 235 - babel-plugin-codegen@^3.0.0, babel-plugin-codegen@^3.1.0: 236 version "3.1.0" 237 resolved "https://registry.yarnpkg.com/babel-plugin-codegen/-/babel-plugin-codegen-3.1.0.tgz#a5eeccd269f868d9173a32b9b3ceb052f307a826" 238 integrity sha512-etFLWBRmsCY6aT44GW6SXAv7NfjXAbNB6XNbH+ZiX5B00yYL4TSPZlETaZ5dZ5kYO2wpSc72z9HeK99BX7uERw== ··· 255 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 256 integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 257 258 brace-expansion@^1.1.7: 259 version "1.1.11" 260 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" ··· 262 dependencies: 263 balanced-match "^1.0.0" 264 concat-map "0.0.1" 265 266 buble@^0.19.8: 267 version "0.19.8" ··· 292 resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 293 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 294 295 chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 296 version "2.4.2" 297 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" ··· 301 escape-string-regexp "^1.0.5" 302 supports-color "^5.3.0" 303 304 - codegen.macro@^3.0.0: 305 version "3.0.0" 306 - resolved "https://registry.yarnpkg.com/codegen.macro/-/codegen.macro-3.0.0.tgz#5998646d53d3cfd832204cd6b20f58c245f60a80" 307 - integrity sha512-gDDnd8JmoQTms9ctoe7Olcr8KuIOnU85e7wieNMC14H4at3abNokxbqwRjKS0na5omOGQez3wdaFalbe0Z2tTA== 308 dependencies: 309 - babel-plugin-codegen "^3.0.0" 310 311 color-convert@^1.9.0: 312 version "1.9.3" ··· 315 dependencies: 316 color-name "1.1.3" 317 318 color-name@1.1.3: 319 version "1.1.3" 320 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 321 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 322 323 commander@^2.20.0: 324 version "2.20.3" 325 resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" ··· 381 dependencies: 382 object-keys "^1.0.12" 383 384 error-ex@^1.3.1: 385 version "1.3.2" 386 resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" ··· 429 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 430 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 431 432 function-bind@^1.1.1: 433 version "1.1.1" 434 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" ··· 449 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 450 integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 451 452 has-flag@^3.0.0: 453 version "3.0.0" 454 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 455 integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 456 457 has-symbols@^1.0.0, has-symbols@^1.0.1: 458 version "1.0.1" 459 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" ··· 505 version "1.0.2" 506 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 507 integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 508 509 is-module@^1.0.0: 510 version "1.0.0" ··· 592 pify "^3.0.0" 593 strip-bom "^3.0.0" 594 595 lodash@^4.17.13: 596 version "4.17.15" 597 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" ··· 748 resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 749 integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 750 751 read-pkg@^3.0.0: 752 version "3.0.0" 753 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" ··· 823 "@babel/helper-module-imports" "^7.0.0" 824 rollup-pluginutils "^2.8.1" 825 826 rollup-plugin-terser@^5.2.0: 827 version "5.2.0" 828 resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz#ba758adf769347b7f1eaf9ef35978d2e207dccc7" ··· 931 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 932 integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 933 934 string.prototype.padend@^3.0.0: 935 version "3.1.0" 936 resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" ··· 954 dependencies: 955 define-properties "^1.1.3" 956 function-bind "^1.1.1" 957 958 strip-bom@^3.0.0: 959 version "3.0.0" ··· 974 dependencies: 975 has-flag "^3.0.0" 976 977 - terser@^4.6.2: 978 version "4.6.3" 979 resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" 980 integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== ··· 987 version "2.0.0" 988 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 989 integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 990 991 unicode-canonical-property-names-ecmascript@^1.0.4: 992 version "1.0.4" ··· 1025 integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1026 dependencies: 1027 isexe "^2.0.0" 1028 1029 yaml@^1.7.2: 1030 version "1.7.2"
··· 178 dependencies: 179 magic-string "^0.25.0" 180 181 + "@types/color-name@^1.1.1": 182 + version "1.1.1" 183 + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 184 + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 185 + 186 "@types/estree@*": 187 version "0.0.42" 188 resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.42.tgz#8d0c1f480339efedb3e46070e22dd63e0430dd11" ··· 230 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" 231 integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== 232 233 + ansi-align@^3.0.0: 234 + version "3.0.0" 235 + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 236 + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 237 + dependencies: 238 + string-width "^3.0.0" 239 + 240 + ansi-regex@^4.1.0: 241 + version "4.1.0" 242 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 243 + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 244 + 245 + ansi-regex@^5.0.0: 246 + version "5.0.0" 247 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 248 + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 249 + 250 ansi-styles@^3.2.1: 251 version "3.2.1" 252 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" ··· 254 dependencies: 255 color-convert "^1.9.0" 256 257 + ansi-styles@^4.1.0: 258 + version "4.2.1" 259 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 260 + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 261 + dependencies: 262 + "@types/color-name" "^1.1.1" 263 + color-convert "^2.0.1" 264 + 265 + babel-plugin-codegen@^3.1.0: 266 version "3.1.0" 267 resolved "https://registry.yarnpkg.com/babel-plugin-codegen/-/babel-plugin-codegen-3.1.0.tgz#a5eeccd269f868d9173a32b9b3ceb052f307a826" 268 integrity sha512-etFLWBRmsCY6aT44GW6SXAv7NfjXAbNB6XNbH+ZiX5B00yYL4TSPZlETaZ5dZ5kYO2wpSc72z9HeK99BX7uERw== ··· 285 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 286 integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 287 288 + boxen@^4.1.0: 289 + version "4.2.0" 290 + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 291 + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 292 + dependencies: 293 + ansi-align "^3.0.0" 294 + camelcase "^5.3.1" 295 + chalk "^3.0.0" 296 + cli-boxes "^2.2.0" 297 + string-width "^4.1.0" 298 + term-size "^2.1.0" 299 + type-fest "^0.8.1" 300 + widest-line "^3.1.0" 301 + 302 brace-expansion@^1.1.7: 303 version "1.1.11" 304 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" ··· 306 dependencies: 307 balanced-match "^1.0.0" 308 concat-map "0.0.1" 309 + 310 + brotli-size@4.0.0: 311 + version "4.0.0" 312 + resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" 313 + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== 314 + dependencies: 315 + duplexer "0.1.1" 316 317 buble@^0.19.8: 318 version "0.19.8" ··· 343 resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 344 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 345 346 + camelcase@^5.3.1: 347 + version "5.3.1" 348 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 349 + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 350 + 351 chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 352 version "2.4.2" 353 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" ··· 357 escape-string-regexp "^1.0.5" 358 supports-color "^5.3.0" 359 360 + chalk@^3.0.0: 361 version "3.0.0" 362 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 363 + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 364 dependencies: 365 + ansi-styles "^4.1.0" 366 + supports-color "^7.1.0" 367 + 368 + cli-boxes@^2.2.0: 369 + version "2.2.0" 370 + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" 371 + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== 372 373 color-convert@^1.9.0: 374 version "1.9.3" ··· 377 dependencies: 378 color-name "1.1.3" 379 380 + color-convert@^2.0.1: 381 + version "2.0.1" 382 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 383 + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 384 + dependencies: 385 + color-name "~1.1.4" 386 + 387 color-name@1.1.3: 388 version "1.1.3" 389 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 390 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 391 392 + color-name@~1.1.4: 393 + version "1.1.4" 394 + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 395 + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 396 + 397 + colors@^1.3.3: 398 + version "1.4.0" 399 + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 400 + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 401 + 402 commander@^2.20.0: 403 version "2.20.3" 404 resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" ··· 460 dependencies: 461 object-keys "^1.0.12" 462 463 + duplexer@0.1.1, duplexer@^0.1.1: 464 + version "0.1.1" 465 + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" 466 + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= 467 + 468 + emoji-regex@^7.0.1: 469 + version "7.0.3" 470 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 471 + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 472 + 473 + emoji-regex@^8.0.0: 474 + version "8.0.0" 475 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 476 + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 477 + 478 error-ex@^1.3.1: 479 version "1.3.2" 480 resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" ··· 523 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 524 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 525 526 + filesize@^4.1.2: 527 + version "4.2.1" 528 + resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.1.tgz#ab1cb2069db5d415911c1a13e144c0e743bc89bc" 529 + integrity sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA== 530 + 531 function-bind@^1.1.1: 532 version "1.1.1" 533 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" ··· 548 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 549 integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 550 551 + gzip-size@^5.1.1: 552 + version "5.1.1" 553 + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" 554 + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== 555 + dependencies: 556 + duplexer "^0.1.1" 557 + pify "^4.0.1" 558 + 559 has-flag@^3.0.0: 560 version "3.0.0" 561 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 562 integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 563 564 + has-flag@^4.0.0: 565 + version "4.0.0" 566 + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 567 + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 568 + 569 has-symbols@^1.0.0, has-symbols@^1.0.1: 570 version "1.0.1" 571 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" ··· 617 version "1.0.2" 618 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 619 integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 620 + 621 + is-fullwidth-code-point@^2.0.0: 622 + version "2.0.0" 623 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 624 + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 625 + 626 + is-fullwidth-code-point@^3.0.0: 627 + version "3.0.0" 628 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 629 + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 630 631 is-module@^1.0.0: 632 version "1.0.0" ··· 714 pify "^3.0.0" 715 strip-bom "^3.0.0" 716 717 + lodash.merge@^4.6.2: 718 + version "4.6.2" 719 + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 720 + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 721 + 722 lodash@^4.17.13: 723 version "4.17.15" 724 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" ··· 875 resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 876 integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 877 878 + pify@^4.0.1: 879 + version "4.0.1" 880 + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 881 + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 882 + 883 read-pkg@^3.0.0: 884 version "3.0.0" 885 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" ··· 955 "@babel/helper-module-imports" "^7.0.0" 956 rollup-pluginutils "^2.8.1" 957 958 + rollup-plugin-filesize@6.2.1: 959 + version "6.2.1" 960 + resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-6.2.1.tgz#552eebc88dd69db3321d99c27dbd49e550812e54" 961 + integrity sha512-JQ2+NMoka81lCR2caGWyngqMKpvJCl7EkFYU7A+T0dA7U1Aml13FW5Ky0aiZIeU3/13cjsKQLRr35SQVmk6i/A== 962 + dependencies: 963 + boxen "^4.1.0" 964 + brotli-size "4.0.0" 965 + colors "^1.3.3" 966 + filesize "^4.1.2" 967 + gzip-size "^5.1.1" 968 + lodash.merge "^4.6.2" 969 + terser "^4.1.3" 970 + 971 rollup-plugin-terser@^5.2.0: 972 version "5.2.0" 973 resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz#ba758adf769347b7f1eaf9ef35978d2e207dccc7" ··· 1076 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 1077 integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 1078 1079 + string-width@^3.0.0: 1080 + version "3.1.0" 1081 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1082 + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1083 + dependencies: 1084 + emoji-regex "^7.0.1" 1085 + is-fullwidth-code-point "^2.0.0" 1086 + strip-ansi "^5.1.0" 1087 + 1088 + string-width@^4.0.0, string-width@^4.1.0: 1089 + version "4.2.0" 1090 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1091 + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1092 + dependencies: 1093 + emoji-regex "^8.0.0" 1094 + is-fullwidth-code-point "^3.0.0" 1095 + strip-ansi "^6.0.0" 1096 + 1097 string.prototype.padend@^3.0.0: 1098 version "3.1.0" 1099 resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" ··· 1117 dependencies: 1118 define-properties "^1.1.3" 1119 function-bind "^1.1.1" 1120 + 1121 + strip-ansi@^5.1.0: 1122 + version "5.2.0" 1123 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1124 + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1125 + dependencies: 1126 + ansi-regex "^4.1.0" 1127 + 1128 + strip-ansi@^6.0.0: 1129 + version "6.0.0" 1130 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1131 + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1132 + dependencies: 1133 + ansi-regex "^5.0.0" 1134 1135 strip-bom@^3.0.0: 1136 version "3.0.0" ··· 1151 dependencies: 1152 has-flag "^3.0.0" 1153 1154 + supports-color@^7.1.0: 1155 + version "7.1.0" 1156 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1157 + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1158 + dependencies: 1159 + has-flag "^4.0.0" 1160 + 1161 + term-size@^2.1.0: 1162 + version "2.1.1" 1163 + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.1.1.tgz#f81ec25854af91a480d2f9d0c77ffcb26594ed1a" 1164 + integrity sha512-UqvQSch04R+69g4RDhrslmGvGL3ucDRX/U+snYW0Mab4uCAyKSndUksaoqlJ81QKSpRnIsuOYQCbC2ZWx2896A== 1165 + 1166 + terser@^4.1.3, terser@^4.6.2: 1167 version "4.6.3" 1168 resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" 1169 integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== ··· 1176 version "2.0.0" 1177 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1178 integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1179 + 1180 + type-fest@^0.8.1: 1181 + version "0.8.1" 1182 + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1183 + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1184 1185 unicode-canonical-property-names-ecmascript@^1.0.4: 1186 version "1.0.4" ··· 1219 integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1220 dependencies: 1221 isexe "^2.0.0" 1222 + 1223 + widest-line@^3.1.0: 1224 + version "3.1.0" 1225 + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1226 + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1227 + dependencies: 1228 + string-width "^4.0.0" 1229 1230 yaml@^1.7.2: 1231 version "1.7.2"