From 81f28fecf2c8fe58b512b669689d82baf4c91e0e Mon Sep 17 00:00:00 2001 From: MapleLeaf <19603573+itsMapleLeaf@users.noreply.github.com> Date: Fri, 7 Jan 2022 15:07:11 -0600 Subject: [PATCH] minify assets in prod --- packages/docs/package.json | 5 +- .../src/asset-builder/transform-esbuild.ts | 1 + .../src/asset-builder/transform-postcss.ts | 17 +- pnpm-lock.yaml | 522 +++++++++++++++++- 4 files changed, 530 insertions(+), 15 deletions(-) diff --git a/packages/docs/package.json b/packages/docs/package.json index 8191e31..b917afd 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -6,7 +6,7 @@ "prepare": "node ./scripts/fix-heroicons.js", "serve": "esmo --experimental-import-meta-resolve --experimental-json-modules --no-warnings --enable-source-maps src/main.tsx | pino-colada", "dev": "nodemon --inspect --exec \"pnpm serve\" --watch src --ext ts,tsx,md,css", - "start": "NODE_ENV=production pnpm serve", + "start": "cross-env NODE_ENV=production pnpm serve", "typecheck": "tsc --noEmit" }, "dependencies": { @@ -15,6 +15,8 @@ "alpinejs": "^3.7.1", "clsx": "^1.1.1", "compression": "^1.7.4", + "cross-env": "^7.0.3", + "cssnano": "^5.0.15", "esbuild": "^0.14.10", "esno": "^0.13.0", "express": "^4.17.2", @@ -36,6 +38,7 @@ "devDependencies": { "@types/browser-sync": "^2.26.3", "@types/compression": "^1.7.2", + "@types/cssnano": "^5.0.0", "@types/express": "^4.17.13", "@types/markdown-it": "^12.2.3", "@types/node": "*", diff --git a/packages/docs/src/asset-builder/transform-esbuild.ts b/packages/docs/src/asset-builder/transform-esbuild.ts index 59200d4..8219c09 100644 --- a/packages/docs/src/asset-builder/transform-esbuild.ts +++ b/packages/docs/src/asset-builder/transform-esbuild.ts @@ -10,6 +10,7 @@ export const transformEsbuild: AssetTransformer = { target: ["chrome89", "firefox89"], format: "esm", write: false, + minify: process.env.NODE_ENV === "production", }) return { diff --git a/packages/docs/src/asset-builder/transform-postcss.ts b/packages/docs/src/asset-builder/transform-postcss.ts index e975861..08ecf37 100644 --- a/packages/docs/src/asset-builder/transform-postcss.ts +++ b/packages/docs/src/asset-builder/transform-postcss.ts @@ -1,5 +1,7 @@ +import autoprefixer from "autoprefixer" +import cssnano from "cssnano" import { readFile } from "fs/promises" -import postcss from "postcss" +import postcss, { AcceptedPlugin } from "postcss" import tailwindcss from "tailwindcss" import { AssetTransformer } from "./asset-builder.js" @@ -7,10 +9,15 @@ export const transformPostCss: AssetTransformer = { async transform(inputFile) { if (!inputFile.match(/\.css$/)) return - const result = await postcss(tailwindcss).process( - await readFile(inputFile), - { from: inputFile }, - ) + const plugins: AcceptedPlugin[] = [tailwindcss, autoprefixer] + + if (process.env.NODE_ENV === "production") { + plugins.push(cssnano) + } + + const result = await postcss(plugins).process(await readFile(inputFile), { + from: inputFile, + }) return { content: result.css, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6f3d14..7cc98dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,6 +42,7 @@ importers: '@tailwindcss/typography': ^0.5.0 '@types/browser-sync': ^2.26.3 '@types/compression': ^1.7.2 + '@types/cssnano': ^5.0.0 '@types/express': ^4.17.13 '@types/markdown-it': ^12.2.3 '@types/node': '*' @@ -54,6 +55,8 @@ importers: browser-sync: ^2.27.7 clsx: ^1.1.1 compression: ^1.7.4 + cross-env: ^7.0.3 + cssnano: ^5.0.15 esbuild: latest esno: ^0.13.0 execa: ^6.0.0 @@ -85,6 +88,8 @@ importers: alpinejs: 3.7.1 clsx: 1.1.1 compression: 1.7.4 + cross-env: 7.0.3 + cssnano: 5.0.15_postcss@8.4.5 esbuild: 0.14.10 esno: 0.13.0_typescript@4.5.4 express: 4.17.2 @@ -105,6 +110,7 @@ importers: devDependencies: '@types/browser-sync': 2.26.3 '@types/compression': 1.7.2 + '@types/cssnano': 5.0.0 '@types/express': 4.17.13 '@types/markdown-it': 12.2.3 '@types/node': 17.0.5 @@ -988,6 +994,11 @@ packages: engines: {node: '>= 6'} dev: true + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: false + /@types/babel__core/7.1.17: resolution: {integrity: sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A==} dependencies: @@ -1045,6 +1056,12 @@ packages: '@types/node': 17.0.5 dev: true + /@types/cssnano/5.0.0: + resolution: {integrity: sha512-z98V7ICNAojxj9YV9+Q8qV+F7fW0poLWJRjed9tu7KNdYzHwAvLOAsTMI8xWjkOY9yzO+HmMxRRixlIvRsZwXg==} + dependencies: + postcss: 8.4.5 + dev: true + /@types/eslint/8.2.1: resolution: {integrity: sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==} dependencies: @@ -1466,6 +1483,10 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + /alphanum-sort/1.0.2: + resolution: {integrity: sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=} + dev: false + /alpinejs/3.7.1: resolution: {integrity: sha512-OJDlhOT50+9REa4cpGHr4WlGBE9ysJEZ+IfN2xwmotUANxp1VSrYgBNBfUWJr9uQ1INhodzvi6UfIWoqQqYOnA==} dependencies: @@ -1906,6 +1927,10 @@ packages: type-is: 1.6.18 dev: false + /boolbase/1.0.0: + resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + dev: false + /boolean/3.1.4: resolution: {integrity: sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==} dev: false @@ -2031,7 +2056,6 @@ packages: escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 - dev: true /bs-recipes/1.3.4: resolution: {integrity: sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=} @@ -2173,9 +2197,17 @@ packages: engines: {node: '>=10'} dev: true + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.19.1 + caniuse-lite: 1.0.30001294 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: false + /caniuse-lite/1.0.30001294: resolution: {integrity: sha512-LiMlrs1nSKZ8qkNhpUf5KD0Al1KCBE3zaT7OLOwEkagXMEDij98SiOovn9wxVGQpklk9vVC/pUSqgYmkmKOS8g==} - dev: true /capture-exit/2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -2373,6 +2405,10 @@ packages: /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /colord/2.9.2: + resolution: {integrity: sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==} + dev: false + /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -2389,6 +2425,11 @@ packages: engines: {node: '>= 6'} dev: true + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + /component-bind/1.0.0: resolution: {integrity: sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=} dev: true @@ -2525,6 +2566,14 @@ packages: p-map: 3.0.0 dev: false + /cross-env/7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: false + /cross-spawn/6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} @@ -2549,12 +2598,111 @@ packages: engines: {node: '>=8'} dev: true + /css-declaration-sorter/6.1.3_postcss@8.4.5: + resolution: {integrity: sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==} + engines: {node: '>= 10'} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.5 + timsort: 0.3.0 + dev: false + + /css-select/4.2.1: + resolution: {integrity: sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==} + dependencies: + boolbase: 1.0.0 + css-what: 5.1.0 + domhandler: 4.3.0 + domutils: 2.8.0 + nth-check: 2.0.1 + dev: false + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false + + /css-what/5.1.0: + resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} + engines: {node: '>= 6'} + dev: false + /cssesc/3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false + /cssnano-preset-default/5.1.10_postcss@8.4.5: + resolution: {integrity: sha512-BcpSzUVygHMOnp9uG5rfPzTOCb0GAHQkqtUQx8j1oMNF9A1Q8hziOOhiM4bdICpmrBIU85BE64RD5XGYsVQZNA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.1.3_postcss@8.4.5 + cssnano-utils: 3.0.0_postcss@8.4.5 + postcss: 8.4.5 + postcss-calc: 8.2.0_postcss@8.4.5 + postcss-colormin: 5.2.3_postcss@8.4.5 + postcss-convert-values: 5.0.2_postcss@8.4.5 + postcss-discard-comments: 5.0.1_postcss@8.4.5 + postcss-discard-duplicates: 5.0.1_postcss@8.4.5 + postcss-discard-empty: 5.0.1_postcss@8.4.5 + postcss-discard-overridden: 5.0.2_postcss@8.4.5 + postcss-merge-longhand: 5.0.4_postcss@8.4.5 + postcss-merge-rules: 5.0.4_postcss@8.4.5 + postcss-minify-font-values: 5.0.2_postcss@8.4.5 + postcss-minify-gradients: 5.0.4_postcss@8.4.5 + postcss-minify-params: 5.0.3_postcss@8.4.5 + postcss-minify-selectors: 5.1.1_postcss@8.4.5 + postcss-normalize-charset: 5.0.1_postcss@8.4.5 + postcss-normalize-display-values: 5.0.2_postcss@8.4.5 + postcss-normalize-positions: 5.0.2_postcss@8.4.5 + postcss-normalize-repeat-style: 5.0.2_postcss@8.4.5 + postcss-normalize-string: 5.0.2_postcss@8.4.5 + postcss-normalize-timing-functions: 5.0.2_postcss@8.4.5 + postcss-normalize-unicode: 5.0.2_postcss@8.4.5 + postcss-normalize-url: 5.0.4_postcss@8.4.5 + postcss-normalize-whitespace: 5.0.2_postcss@8.4.5 + postcss-ordered-values: 5.0.3_postcss@8.4.5 + postcss-reduce-initial: 5.0.2_postcss@8.4.5 + postcss-reduce-transforms: 5.0.2_postcss@8.4.5 + postcss-svgo: 5.0.3_postcss@8.4.5 + postcss-unique-selectors: 5.0.2_postcss@8.4.5 + dev: false + + /cssnano-utils/3.0.0_postcss@8.4.5: + resolution: {integrity: sha512-Pzs7/BZ6OgT+tXXuF12DKR8SmSbzUeVYCtMBbS8lI0uAm3mrYmkyqCXXPsQESI6kmLfEVBppbdVY/el3hg3nAA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + dev: false + + /cssnano/5.0.15_postcss@8.4.5: + resolution: {integrity: sha512-ppZsS7oPpi2sfiyV5+i+NbB/3GtQ+ab2Vs1azrZaXWujUSN4o+WdTxlCZIMcT9yLW3VO/5yX3vpyDaQ1nIn8CQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.1.10_postcss@8.4.5 + lilconfig: 2.0.4 + postcss: 8.4.5 + yaml: 1.10.2 + dev: false + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: false + /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true @@ -2811,6 +2959,18 @@ packages: esutils: 2.0.3 dev: true + /dom-serializer/1.3.2: + resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} + dependencies: + domelementtype: 2.2.0 + domhandler: 4.3.0 + entities: 2.1.0 + dev: false + + /domelementtype/2.2.0: + resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} + dev: false + /domexception/2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} engines: {node: '>=8'} @@ -2818,6 +2978,21 @@ packages: webidl-conversions: 5.0.0 dev: true + /domhandler/4.3.0: + resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.2.0 + dev: false + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.3.2 + domelementtype: 2.2.0 + domhandler: 4.3.0 + dev: false + /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2862,7 +3037,6 @@ packages: /electron-to-chromium/1.4.28: resolution: {integrity: sha512-Gzbf0wUtKfyPaqf0Plz+Ctinf9eQIzxEqBHwSvbGfeOm9GMNdLxyu1dNiCUfM+x6r4BE0xUJNh3Nmg9gfAtTmg==} - dev: true /emittery/0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} @@ -3161,7 +3335,6 @@ packages: /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-goat/2.1.1: resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} @@ -5592,6 +5765,10 @@ packages: resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} dev: false + /lodash.memoize/4.1.2: + resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + dev: false + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -5680,6 +5857,10 @@ packages: uc.micro: 1.0.6 dev: false + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false + /mdurl/1.0.1: resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=} dev: false @@ -5818,7 +5999,6 @@ packages: resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: false /nanomatch/1.2.13: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} @@ -5865,7 +6045,6 @@ packages: /node-releases/2.0.1: resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} - dev: true /nodemon/2.0.15: resolution: {integrity: sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==} @@ -5922,6 +6101,11 @@ packages: engines: {node: '>=8'} dev: true + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false + /npm-run-path/2.0.2: resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} engines: {node: '>=4'} @@ -5942,6 +6126,12 @@ packages: dependencies: path-key: 4.0.0 + /nth-check/2.0.1: + resolution: {integrity: sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==} + dependencies: + boolbase: 1.0.0 + dev: false + /nwsapi/2.2.0: resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} dev: true @@ -6439,6 +6629,75 @@ packages: resolution: {integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=} engines: {node: '>=0.10.0'} + /postcss-calc/8.2.0_postcss@8.4.5: + resolution: {integrity: sha512-PueXCv288diX7OXyJicGNA6Q3+L4xYb2cALTAeFj9X6PXnj+s4pUf1vkZnwn+rldfu2taCA9ondjF93lhRTPFA==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-colormin/5.2.3_postcss@8.4.5: + resolution: {integrity: sha512-dra4xoAjub2wha6RUXAgadHEn2lGxbj8drhFcIGLOMn914Eu7DkPUurugDXgstwttCYkJtZ/+PkWRWdp3UHRIA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.1 + caniuse-api: 3.0.0 + colord: 2.9.2 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-convert-values/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-discard-comments/5.0.1_postcss@8.4.5: + resolution: {integrity: sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + dev: false + + /postcss-discard-duplicates/5.0.1_postcss@8.4.5: + resolution: {integrity: sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + dev: false + + /postcss-discard-empty/5.0.1_postcss@8.4.5: + resolution: {integrity: sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + dev: false + + /postcss-discard-overridden/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-+56BLP6NSSUuWUXjRgAQuho1p5xs/hU5Sw7+xt9S3JSg+7R6+WMGnJW7Hre/6tTuZ2xiXMB42ObkiZJ2hy/Pew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + dev: false + /postcss-js/3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} @@ -6460,6 +6719,76 @@ packages: lilconfig: 2.0.4 yaml: 1.10.2 + /postcss-merge-longhand/5.0.4_postcss@8.4.5: + resolution: {integrity: sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + stylehacks: 5.0.1_postcss@8.4.5 + dev: false + + /postcss-merge-rules/5.0.4_postcss@8.4.5: + resolution: {integrity: sha512-yOj7bW3NxlQxaERBB0lEY1sH5y+RzevjbdH4DBJurjKERNpknRByFNdNe+V72i5pIZL12woM9uGdS5xbSB+kDQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.1 + caniuse-api: 3.0.0 + cssnano-utils: 3.0.0_postcss@8.4.5 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 + dev: false + + /postcss-minify-font-values/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-R6MJZryq28Cw0AmnyhXrM7naqJZZLoa1paBltIzh2wM7yb4D45TLur+eubTQ4jCmZU9SGeZdWsc5KcSoqTMeTg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-gradients/5.0.4_postcss@8.4.5: + resolution: {integrity: sha512-RVwZA7NC4R4J76u8X0Q0j+J7ItKUWAeBUJ8oEEZWmtv3Xoh19uNJaJwzNpsydQjk6PkuhRrK+YwwMf+c+68EYg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.2 + cssnano-utils: 3.0.0_postcss@8.4.5 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-params/5.0.3_postcss@8.4.5: + resolution: {integrity: sha512-NY92FUikE+wralaiVexFd5gwb7oJTIDhgTNeIw89i1Ymsgt4RWiPXfz3bg7hDy4NL6gepcThJwOYNtZO/eNi7Q==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.19.1 + cssnano-utils: 3.0.0_postcss@8.4.5 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-selectors/5.1.1_postcss@8.4.5: + resolution: {integrity: sha512-TOzqOPXt91O2luJInaVPiivh90a2SIK5Nf1Ea7yEIM/5w+XA5BGrZGUSW8aEx9pJ/oNj7ZJBhjvigSiBV+bC1Q==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + alphanum-sort: 1.0.2 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 + dev: false + /postcss-nested/5.0.6_postcss@8.4.5: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} @@ -6470,6 +6799,129 @@ packages: postcss-selector-parser: 6.0.8 dev: false + /postcss-normalize-charset/5.0.1_postcss@8.4.5: + resolution: {integrity: sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + dev: false + + /postcss-normalize-display-values/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-RxXoJPUR0shSjkMMzgEZDjGPrgXUVYyWA/YwQRicb48H15OClPuaDR7tYokLAlGZ2tCSENEN5WxjgxSD5m4cUw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-positions/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-tqghWFVDp2btqFg1gYob1etPNxXLNh3uVeWgZE2AQGh6b2F8AK2Gj36v5Vhyh+APwIzNjmt6jwZ9pTBP+/OM8g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-repeat-style/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-/rIZn8X9bBzC7KvY4iKUhXUGW3MmbXwfPF23jC9wT9xTi7kAvgj8sEgwxjixBmoL6MVa4WOgxNz2hAR6wTK8tw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-string/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-zaI1yzwL+a/FkIzUWMQoH25YwCYxi917J4pYm1nRXtdgiCdnlTkx5eRzqWEC64HtRa06WCJ9TIutpb6GmW4gFw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-timing-functions/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-Ao0PP6MoYsRU1LxeVUW740ioknvdIUmfr6uAA3xWlQJ9s69/Tupy8qwhuKG3xWfl+KvLMAP9p2WXF9cwuk/7Bg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-unicode/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-3y/V+vjZ19HNcTizeqwrbZSUsE69ZMRHfiiyLAJb7C7hJtYmM4Gsbajy7gKagu97E8q5rlS9k8FhojA8cpGhWw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.1 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-url/5.0.4_postcss@8.4.5: + resolution: {integrity: sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-whitespace/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-CXBx+9fVlzSgbk0IXA/dcZn9lXixnQRndnsPC5ht3HxlQ1bVh77KQDL1GffJx1LTzzfae8ftMulsjYmO2yegxA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-ordered-values/5.0.3_postcss@8.4.5: + resolution: {integrity: sha512-T9pDS+P9bWeFvqivXd5ACzQmrCmHjv3ZP+djn8E1UZY7iK79pFSm7i3WbKw2VSmFmdbMm8sQ12OPcNpzBo3Z2w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.0.0_postcss@8.4.5 + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-reduce-initial/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.1 + caniuse-api: 3.0.0 + postcss: 8.4.5 + dev: false + + /postcss-reduce-transforms/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-25HeDeFsgiPSUx69jJXZn8I06tMxLQJJNF5h7i9gsUg8iP4KOOJ8EX8fj3seeoLt3SLU2YDD6UPnDYVGUO7DEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + dev: false + /postcss-selector-parser/6.0.8: resolution: {integrity: sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==} engines: {node: '>=4'} @@ -6478,6 +6930,28 @@ packages: util-deprecate: 1.0.2 dev: false + /postcss-svgo/5.0.3_postcss@8.4.5: + resolution: {integrity: sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.5 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: false + + /postcss-unique-selectors/5.0.2_postcss@8.4.5: + resolution: {integrity: sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + alphanum-sort: 1.0.2 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 + dev: false + /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -6488,7 +6962,6 @@ packages: nanoid: 3.1.30 picocolors: 1.0.0 source-map-js: 1.0.1 - dev: false /prelude-ls/1.1.2: resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} @@ -7294,7 +7767,6 @@ packages: /source-map-js/1.0.1: resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==} engines: {node: '>=0.10.0'} - dev: false /source-map-resolve/0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} @@ -7322,7 +7794,6 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} @@ -7371,6 +7842,10 @@ packages: /sprintf-js/1.0.3: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + dev: false + /stack-utils/2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} @@ -7531,6 +8006,17 @@ packages: engines: {node: '>=8'} dev: true + /stylehacks/5.0.1_postcss@8.4.5: + resolution: {integrity: sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.19.1 + postcss: 8.4.5 + postcss-selector-parser: 6.0.8 + dev: false + /sucrase/3.20.3: resolution: {integrity: sha512-azqwq0/Bs6RzLAdb4dXxsCgMtAaD2hzmUr4UhSfsxO46JFPAwMnnb441B/qsudZiS6Ylea3JXZe3Q497lsgXzQ==} engines: {node: '>=8'} @@ -7576,6 +8062,20 @@ packages: supports-color: 7.2.0 dev: true + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.2.1 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: false + /symbol-observable/1.0.1: resolution: {integrity: sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=} engines: {node: '>=0.10.0'} @@ -7675,6 +8175,10 @@ packages: resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} dev: false + /timsort/0.3.0: + resolution: {integrity: sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=} + dev: false + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'}