Commit 993538de21dbb9e54e308afb40ff096ba0ab0e19

Authored by vben
1 parent d7531554

feat: added brotli|gzip compression and related test commands

.env.production
... ... @@ -7,8 +7,10 @@ VITE_PUBLIC_PATH = /
7 7 # Delete console
8 8 VITE_DROP_CONSOLE = true
9 9  
10   -# Whether to output gz file for packaging
11   -VITE_BUILD_GZIP = false
  10 +# Whether to enable gizp or brotli compression
  11 +# Optional: gzip | brotli | none
  12 +# If you need multiple forms, you can use `,` to separate
  13 +VITE_BUILD_COMPRESS = 'gzip'
12 14  
13 15 # Basic interface address SPA
14 16 VITE_GLOB_API_URL=/api
... ...
CHANGELOG.zh_CN.md
... ... @@ -4,6 +4,7 @@
4 4  
5 5 - useModal 新增返回值函数 `redoModalHeight`,用于在 modal 内为动态内容时刷新 modal 高度
6 6 - 升级 husky 到 5.0
  7 +- 新增 `brotli`|`gzip`压缩及相关测试命令
7 8  
8 9 ### 🐛 Bug Fixes
9 10  
... ...
README.md
... ... @@ -257,3 +257,4 @@ If these plugins are helpful to you, you can give a star
257 257 - [vite-plugin-style-import](https://github.com/anncwb/vite-plugin-style-import)
258 258 - [vite-plugin-theme](https://github.com/anncwb/vite-plugin-theme)
259 259 - [vite-plugin-imagemin](https://github.com/anncwb/vite-plugin-imagemin)
  260 +- [vite-plugin-compression](https://github.com/anncwb/vite-plugin-compression)
... ...
README.zh-CN.md
... ... @@ -260,6 +260,7 @@ yarn clean:lib # 删除node_modules,兼容window系统
260 260 - [vite-plugin-style-import](https://github.com/anncwb/vite-plugin-style-import)
261 261 - [vite-plugin-theme](https://github.com/anncwb/vite-plugin-theme)
262 262 - [vite-plugin-imagemin](https://github.com/anncwb/vite-plugin-imagemin)
  263 +- [vite-plugin-compression](https://github.com/anncwb/vite-plugin-compression)
263 264  
264 265 ## 加入我们
265 266  
... ...
build/utils.ts
... ... @@ -23,13 +23,6 @@ export function isReportMode(): boolean {
23 23 return process.env.REPORT === 'true';
24 24 }
25 25  
26   -/**
27   - * Whether to generate gzip for packaging
28   - */
29   -export function isBuildGzip(): boolean {
30   - return process.env.VITE_BUILD_GZIP === 'true';
31   -}
32   -
33 26 export interface ViteEnv {
34 27 VITE_PORT: number;
35 28 VITE_USE_MOCK: boolean;
... ... @@ -40,7 +33,7 @@ export interface ViteEnv {
40 33 VITE_GLOB_APP_SHORT_NAME: string;
41 34 VITE_USE_CDN: boolean;
42 35 VITE_DROP_CONSOLE: boolean;
43   - VITE_BUILD_GZIP: boolean;
  36 + VITE_BUILD_COMPRESS: 'gzip' | 'brotli' | 'none';
44 37 VITE_DYNAMIC_IMPORT: boolean;
45 38 VITE_LEGACY: boolean;
46 39 VITE_USE_IMAGEMIN: boolean;
... ...
build/vite/plugin/compress.ts 0 → 100644
  1 +/**
  2 + * Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
  3 + */
  4 +import type { Plugin } from 'vite';
  5 +
  6 +import compressPlugin from 'vite-plugin-compression';
  7 +
  8 +export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none'): Plugin | Plugin[] {
  9 + const compressList = compress.split(',');
  10 +
  11 + const plugins: Plugin[] = [];
  12 +
  13 + if (compressList.includes('gzip')) {
  14 + plugins.push(
  15 + compressPlugin({
  16 + ext: '.gz',
  17 + })
  18 + );
  19 + }
  20 + if (compressList.includes('brotli')) {
  21 + plugins.push(
  22 + compressPlugin({
  23 + ext: '.br',
  24 + algorithm: 'brotliCompress',
  25 + })
  26 + );
  27 + }
  28 + return plugins;
  29 +}
... ...
build/vite/plugin/gzip.ts deleted 100644 → 0
1   -/**
2   - * Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
3   - */
4   -import type { Plugin } from 'vite';
5   -
6   -import gzipPlugin from 'rollup-plugin-gzip';
7   -import { isBuildGzip } from '../../utils';
8   -
9   -export function configGzipPlugin(isBuild: boolean): Plugin | Plugin[] {
10   - const useGzip = isBuild && isBuildGzip();
11   -
12   - if (useGzip) {
13   - return gzipPlugin();
14   - }
15   -
16   - return [];
17   -}
build/vite/plugin/index.ts
... ... @@ -9,14 +9,14 @@ import { ViteEnv } from '../../utils';
9 9 import { configHtmlPlugin } from './html';
10 10 import { configPwaConfig } from './pwa';
11 11 import { configMockPlugin } from './mock';
12   -import { configGzipPlugin } from './gzip';
  12 +import { configCompressPlugin } from './compress';
13 13 import { configStyleImportPlugin } from './styleImport';
14 14 import { configVisualizerConfig } from './visualizer';
15 15 import { configThemePlugin } from './theme';
16 16 import { configImageminPlugin } from './imagemin';
17 17  
18 18 export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
19   - const { VITE_USE_IMAGEMIN, VITE_USE_MOCK, VITE_LEGACY } = viteEnv;
  19 + const { VITE_USE_IMAGEMIN, VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS } = viteEnv;
20 20  
21 21 const vitePlugins: (Plugin | Plugin[])[] = [
22 22 // have to
... ... @@ -52,7 +52,7 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
52 52 VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin());
53 53  
54 54 // rollup-plugin-gzip
55   - vitePlugins.push(configGzipPlugin(isBuild));
  55 + vitePlugins.push(configCompressPlugin(VITE_BUILD_COMPRESS));
56 56  
57 57 // vite-plugin-pwa
58 58 vitePlugins.push(configPwaConfig(viteEnv));
... ...
package.json
... ... @@ -19,6 +19,8 @@
19 19 "lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
20 20 "lint:ls-lint": "ls-lint",
21 21 "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
  22 + "test:gzip": "http-server dist --cors --gzip -c-1",
  23 + "test:br": "http-server dist --cors --brotli -c-1",
22 24 "reinstall": "rimraf yarn.lock && rimraf package.lock.json && rimraf node_modules && npm run bootstrap",
23 25 "postinstall": "is-ci || husky install"
24 26 },
... ... @@ -53,7 +55,7 @@
53 55 "@ls-lint/ls-lint": "^1.9.2",
54 56 "@purge-icons/generated": "^0.6.0",
55 57 "@types/echarts": "^4.9.3",
56   - "@types/fs-extra": "^9.0.6",
  58 + "@types/fs-extra": "^9.0.7",
57 59 "@types/http-proxy": "^1.17.5",
58 60 "@types/koa-static": "^4.0.1",
59 61 "@types/lodash-es": "^4.17.4",
... ... @@ -66,9 +68,9 @@
66 68 "@types/zxcvbn": "^4.4.0",
67 69 "@typescript-eslint/eslint-plugin": "^4.15.0",
68 70 "@typescript-eslint/parser": "^4.15.0",
69   - "@vitejs/plugin-legacy": "^1.2.3",
  71 + "@vitejs/plugin-legacy": "^1.3.0",
70 72 "@vitejs/plugin-vue": "^1.1.4",
71   - "@vitejs/plugin-vue-jsx": "^1.0.3",
  73 + "@vitejs/plugin-vue-jsx": "^1.1.0",
72 74 "@vue/compiler-sfc": "^3.0.5",
73 75 "@vuedx/typecheck": "^0.6.3",
74 76 "@vuedx/typescript-plugin-vue": "^0.6.3",
... ... @@ -83,28 +85,29 @@
83 85 "eslint-plugin-vue": "^7.5.0",
84 86 "esno": "^0.4.3",
85 87 "fs-extra": "^9.1.0",
  88 + "http-server": "^0.12.3",
86 89 "husky": "^5.0.9",
87 90 "is-ci": "^2.0.0",
88 91 "less": "^4.1.1",
89 92 "lint-staged": "^10.5.4",
90 93 "prettier": "^2.2.1",
91 94 "rimraf": "^3.0.2",
92   - "rollup-plugin-gzip": "^2.5.0",
93 95 "rollup-plugin-visualizer": "^4.2.0",
94   - "stylelint": "^13.9.0",
  96 + "stylelint": "^13.10.0",
95 97 "stylelint-config-prettier": "^8.0.2",
96 98 "stylelint-config-standard": "^20.0.0",
97 99 "stylelint-order": "^4.1.0",
98 100 "ts-node": "^9.1.1",
99   - "typescript": "^4.1.3",
100   - "vite": "2.0.0-beta.66",
  101 + "typescript": "^4.1.5",
  102 + "vite": "2.0.0-beta.69",
  103 + "vite-plugin-compression": "^0.2.1",
101 104 "vite-plugin-html": "^2.0.0",
102   - "vite-plugin-imagemin": "^0.2.5",
  105 + "vite-plugin-imagemin": "^0.2.6",
103 106 "vite-plugin-mock": "^2.1.4",
104 107 "vite-plugin-purge-icons": "^0.6.0",
105 108 "vite-plugin-pwa": "^0.4.6",
106 109 "vite-plugin-style-import": "^0.7.2",
107   - "vite-plugin-theme": "^0.4.2",
  110 + "vite-plugin-theme": "^0.4.3",
108 111 "vue-eslint-parser": "^7.4.1",
109 112 "yargs": "^16.2.0"
110 113 },
... ...
vite.config.ts
... ... @@ -30,13 +30,15 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
30 30 return {
31 31 base: VITE_PUBLIC_PATH,
32 32 root,
33   - alias: [
34   - {
35   - // /@/xxxx => src/xxx
36   - find: /^\/@\//,
37   - replacement: pathResolve('src') + '/',
38   - },
39   - ],
  33 + resolve: {
  34 + alias: [
  35 + {
  36 + // /@/xxxx => src/xxx
  37 + find: /^\/@\//,
  38 + replacement: pathResolve('src') + '/',
  39 + },
  40 + ],
  41 + },
40 42 server: {
41 43 port: VITE_PORT,
42 44 // Load proxy configuration from .env
... ... @@ -88,6 +90,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
88 90 optimizeDeps: {
89 91 // @iconify/iconify: The dependency is dynamically and virtually loaded by @purge-icons/generated, so it needs to be specified explicitly
90 92 include: ['@iconify/iconify'],
  93 + exclude: ['vue-demi'],
91 94 },
92 95 };
93 96 };
... ...
yarn.lock
... ... @@ -1478,10 +1478,10 @@
1478 1478 "@types/qs" "*"
1479 1479 "@types/serve-static" "*"
1480 1480  
1481   -"@types/fs-extra@^9.0.6":
1482   - version "9.0.6"
1483   - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz#488e56b77299899a608b8269719c1d133027a6ab"
1484   - integrity sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==
  1481 +"@types/fs-extra@^9.0.7":
  1482 + version "9.0.7"
  1483 + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.7.tgz#a9ef2ffdab043def080c5bec94c03402f793577f"
  1484 + integrity sha512-YGq2A6Yc3bldrLUlm17VNWOnUbnEzJ9CMgOeLFtQF3HOCN5lQBO8VyjG00a5acA5NNSM30kHVGp1trZgnVgi1Q==
1485 1485 dependencies:
1486 1486 "@types/node" "*"
1487 1487  
... ... @@ -1829,20 +1829,21 @@
1829 1829 "@typescript-eslint/types" "4.15.0"
1830 1830 eslint-visitor-keys "^2.0.0"
1831 1831  
1832   -"@vitejs/plugin-legacy@^1.2.3":
1833   - version "1.2.3"
1834   - resolved "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.2.3.tgz#1007033b0a328e5c0d8d21683383dc40d8fed6a3"
1835   - integrity sha512-DOceNUiGkN/Iv3dFJGDwJMdIFv4N+5vDt96MdBFOFMlktt1fumOuNJvyCBE8TKc0qC0K5YSxUXpfKeKZhkkyLQ==
  1832 +"@vitejs/plugin-legacy@^1.3.0":
  1833 + version "1.3.0"
  1834 + resolved "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.3.0.tgz#1b4f5d46e0cc3eb7d415f7aa9a9b655c2f593325"
  1835 + integrity sha512-lNNNuFIZ3bTnAPlu/dvqi383+mpqVuoo0XpM4WtgxMQHNxK1rTk2liwlxxQk0/ivUJuvYo67YKq0GD1JkrQk5Q==
1836 1836 dependencies:
1837 1837 "@babel/standalone" "^7.12.12"
1838 1838 core-js "^3.8.2"
  1839 + magic-string "^0.25.7"
1839 1840 regenerator-runtime "^0.13.7"
1840 1841 systemjs "^6.8.3"
1841 1842  
1842   -"@vitejs/plugin-vue-jsx@^1.0.3":
1843   - version "1.0.3"
1844   - resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.0.3.tgz#3f59884ce47886cd6e6cd794877e3e9e0df98cb4"
1845   - integrity sha512-ZidQqRkb3BoH0xhYZ8gO+F+DVYEirg+MafzOJ1WUXXGn5peRIiy+k22KsuyC3bguL37SN6rx5ypjeef1r/qqOw==
  1843 +"@vitejs/plugin-vue-jsx@^1.1.0":
  1844 + version "1.1.0"
  1845 + resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.1.0.tgz#9bd45834db9e8d29a569e330917142c073dab347"
  1846 + integrity sha512-7fpB9rdhWZ7DSdcK/w2sEuSaeOiSyhwu/2ojwl8qz1pshWEPQj9F2g9TaZtEBz298nOKBM0hUOCcKKRUO8Ga8A==
1846 1847 dependencies:
1847 1848 "@babel/core" "^7.12.10"
1848 1849 "@babel/plugin-syntax-import-meta" "^7.10.4"
... ... @@ -2341,6 +2342,13 @@ async@0.9.x:
2341 2342 resolved "https://registry.npmjs.org/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
2342 2343 integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
2343 2344  
  2345 +async@^2.6.2:
  2346 + version "2.6.3"
  2347 + resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
  2348 + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
  2349 + dependencies:
  2350 + lodash "^4.17.14"
  2351 +
2344 2352 at-least-node@^1.0.0:
2345 2353 version "1.0.0"
2346 2354 resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
... ... @@ -2418,6 +2426,11 @@ base@^0.11.1:
2418 2426 mixin-deep "^1.2.0"
2419 2427 pascalcase "^0.1.1"
2420 2428  
  2429 +basic-auth@^1.0.3:
  2430 + version "1.1.0"
  2431 + resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884"
  2432 + integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=
  2433 +
2421 2434 big.js@^5.2.2:
2422 2435 version "5.2.2"
2423 2436 resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
... ... @@ -2970,6 +2983,11 @@ colorette@^1.2.1:
2970 2983 resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
2971 2984 integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
2972 2985  
  2986 +colors@^1.4.0:
  2987 + version "1.4.0"
  2988 + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
  2989 + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
  2990 +
2973 2991 commander@*:
2974 2992 version "7.0.0"
2975 2993 resolved "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2"
... ... @@ -3304,6 +3322,11 @@ core-util-is@~1.0.0:
3304 3322 resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
3305 3323 integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
3306 3324  
  3325 +corser@^2.0.1:
  3326 + version "2.0.1"
  3327 + resolved "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
  3328 + integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=
  3329 +
3307 3330 cosmiconfig@^7.0.0:
3308 3331 version "7.0.0"
3309 3332 resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
... ... @@ -3498,7 +3521,7 @@ debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, d
3498 3521 dependencies:
3499 3522 ms "2.1.2"
3500 3523  
3501   -debug@^3.2.6:
  3524 +debug@^3.1.1, debug@^3.2.6:
3502 3525 version "3.2.7"
3503 3526 resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
3504 3527 integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
... ... @@ -3788,6 +3811,16 @@ echarts@^4.9.0:
3788 3811 dependencies:
3789 3812 zrender "4.3.2"
3790 3813  
  3814 +ecstatic@^3.3.2:
  3815 + version "3.3.2"
  3816 + resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48"
  3817 + integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==
  3818 + dependencies:
  3819 + he "^1.1.1"
  3820 + mime "^1.6.0"
  3821 + minimist "^1.1.0"
  3822 + url-join "^2.0.5"
  3823 +
3791 3824 ee-first@1.1.1:
3792 3825 version "1.1.1"
3793 3826 resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
... ... @@ -4119,6 +4152,11 @@ esutils@^2.0.2:
4119 4152 resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
4120 4153 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
4121 4154  
  4155 +eventemitter3@^4.0.0:
  4156 + version "4.0.7"
  4157 + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
  4158 + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
  4159 +
4122 4160 exec-buffer@^3.0.0:
4123 4161 version "3.2.0"
4124 4162 resolved "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b"
... ... @@ -4520,6 +4558,11 @@ flatted@^3.1.0:
4520 4558 resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
4521 4559 integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
4522 4560  
  4561 +follow-redirects@^1.0.0:
  4562 + version "1.13.2"
  4563 + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147"
  4564 + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==
  4565 +
4523 4566 follow-redirects@^1.10.0:
4524 4567 version "1.13.1"
4525 4568 resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
... ... @@ -5010,7 +5053,7 @@ hash-sum@^2.0.0:
5010 5053 resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
5011 5054 integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
5012 5055  
5013   -he@^1.2.0:
  5056 +he@^1.1.1, he@^1.2.0:
5014 5057 version "1.2.0"
5015 5058 resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
5016 5059 integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
... ... @@ -5098,6 +5141,31 @@ http-errors@1.7.2:
5098 5141 statuses ">= 1.5.0 < 2"
5099 5142 toidentifier "1.0.0"
5100 5143  
  5144 +http-proxy@^1.18.0:
  5145 + version "1.18.1"
  5146 + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
  5147 + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
  5148 + dependencies:
  5149 + eventemitter3 "^4.0.0"
  5150 + follow-redirects "^1.0.0"
  5151 + requires-port "^1.0.0"
  5152 +
  5153 +http-server@^0.12.3:
  5154 + version "0.12.3"
  5155 + resolved "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz#ba0471d0ecc425886616cb35c4faf279140a0d37"
  5156 + integrity sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==
  5157 + dependencies:
  5158 + basic-auth "^1.0.3"
  5159 + colors "^1.4.0"
  5160 + corser "^2.0.1"
  5161 + ecstatic "^3.3.2"
  5162 + http-proxy "^1.18.0"
  5163 + minimist "^1.2.5"
  5164 + opener "^1.5.1"
  5165 + portfinder "^1.0.25"
  5166 + secure-compare "3.0.1"
  5167 + union "~0.5.0"
  5168 +
5101 5169 https-proxy-agent@^5.0.0:
5102 5170 version "5.0.0"
5103 5171 resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
... ... @@ -5834,10 +5902,10 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
5834 5902 resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
5835 5903 integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
5836 5904  
5837   -known-css-properties@^0.20.0:
5838   - version "0.20.0"
5839   - resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz#0570831661b47dd835293218381166090ff60e96"
5840   - integrity sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==
  5905 +known-css-properties@^0.21.0:
  5906 + version "0.21.0"
  5907 + resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz#15fbd0bbb83447f3ce09d8af247ed47c68ede80d"
  5908 + integrity sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==
5841 5909  
5842 5910 less@^4.1.1:
5843 5911 version "4.1.1"
... ... @@ -6348,7 +6416,7 @@ mime-types@~2.1.24:
6348 6416 dependencies:
6349 6417 mime-db "1.45.0"
6350 6418  
6351   -mime@^1.4.1:
  6419 +mime@^1.4.1, mime@^1.6.0:
6352 6420 version "1.6.0"
6353 6421 resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
6354 6422 integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
... ... @@ -6389,7 +6457,7 @@ minimist-options@4.1.0:
6389 6457 is-plain-obj "^1.1.0"
6390 6458 kind-of "^6.0.3"
6391 6459  
6392   -minimist@1.2.5, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
  6460 +minimist@1.2.5, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
6393 6461 version "1.2.5"
6394 6462 resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
6395 6463 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
... ... @@ -6402,7 +6470,7 @@ mixin-deep@^1.2.0:
6402 6470 for-in "^1.0.2"
6403 6471 is-extendable "^1.0.1"
6404 6472  
6405   -mkdirp@~0.5.1:
  6473 +mkdirp@^0.5.5, mkdirp@~0.5.1:
6406 6474 version "0.5.5"
6407 6475 resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
6408 6476 integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
... ... @@ -6736,6 +6804,11 @@ open@^7.0.3:
6736 6804 is-docker "^2.0.0"
6737 6805 is-wsl "^2.1.1"
6738 6806  
  6807 +opener@^1.5.1:
  6808 + version "1.5.2"
  6809 + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
  6810 + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
  6811 +
6739 6812 optionator@^0.9.1:
6740 6813 version "0.9.1"
6741 6814 resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
... ... @@ -7146,6 +7219,15 @@ pngquant-bin@^6.0.0:
7146 7219 execa "^4.0.0"
7147 7220 logalot "^2.0.0"
7148 7221  
  7222 +portfinder@^1.0.25:
  7223 + version "1.0.28"
  7224 + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
  7225 + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
  7226 + dependencies:
  7227 + async "^2.6.2"
  7228 + debug "^3.1.1"
  7229 + mkdirp "^0.5.5"
  7230 +
7149 7231 posix-character-classes@^0.1.0:
7150 7232 version "0.1.1"
7151 7233 resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
... ... @@ -7389,6 +7471,11 @@ qs@6.7.0:
7389 7471 resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
7390 7472 integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
7391 7473  
  7474 +qs@^6.4.0:
  7475 + version "6.9.6"
  7476 + resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
  7477 + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==
  7478 +
7392 7479 query-string@^5.0.1:
7393 7480 version "5.1.1"
7394 7481 resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
... ... @@ -7656,6 +7743,11 @@ require-main-filename@^2.0.0:
7656 7743 resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
7657 7744 integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
7658 7745  
  7746 +requires-port@^1.0.0:
  7747 + version "1.0.0"
  7748 + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
  7749 + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
  7750 +
7659 7751 resize-observer-polyfill@^1.5.1:
7660 7752 version "1.5.1"
7661 7753 resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
... ... @@ -7755,11 +7847,6 @@ rollup-plugin-esbuild@^2.6.1:
7755 7847 joycon "^2.2.5"
7756 7848 strip-json-comments "^3.1.1"
7757 7849  
7758   -rollup-plugin-gzip@^2.5.0:
7759   - version "2.5.0"
7760   - resolved "https://registry.npmjs.org/rollup-plugin-gzip/-/rollup-plugin-gzip-2.5.0.tgz#786650e7bddf86d7f723c205c3e3018ea727388c"
7761   - integrity sha512-1N0xtJJ8XfZYklZN1QcMLe+Mos2Vaccy3YUarE/AB1RkH7mkeppkFAz9srh+9KWOC3I2LWJeAYwFabO0rJ4mxg==
7762   -
7763 7850 rollup-plugin-purge-icons@^0.6.0:
7764 7851 version "0.6.0"
7765 7852 resolved "https://registry.npmjs.org/rollup-plugin-purge-icons/-/rollup-plugin-purge-icons-0.6.0.tgz#cfddf4935107180bdb14385228449c0d8b0557a2"
... ... @@ -7861,6 +7948,11 @@ scroll-into-view-if-needed@^2.2.25:
7861 7948 dependencies:
7862 7949 compute-scroll-into-view "^1.0.16"
7863 7950  
  7951 +secure-compare@3.0.1:
  7952 + version "3.0.1"
  7953 + resolved "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3"
  7954 + integrity sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=
  7955 +
7864 7956 seek-bzip@^1.0.5:
7865 7957 version "1.0.6"
7866 7958 resolved "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4"
... ... @@ -8436,10 +8528,10 @@ stylelint-order@^4.1.0:
8436 8528 postcss "^7.0.31"
8437 8529 postcss-sorting "^5.0.1"
8438 8530  
8439   -stylelint@^13.9.0:
8440   - version "13.9.0"
8441   - resolved "https://registry.npmjs.org/stylelint/-/stylelint-13.9.0.tgz#93921ee6e11d4556b9f31131f485dc813b68e32a"
8442   - integrity sha512-VVWH2oixOAxpWL1vH+V42ReCzBjW2AeqskSAbi8+3OjV1Xg3VZkmTcAqBZfRRvJeF4BvYuDLXebW3tIHxgZDEg==
  8531 +stylelint@^13.10.0:
  8532 + version "13.10.0"
  8533 + resolved "https://registry.npmjs.org/stylelint/-/stylelint-13.10.0.tgz#67b0c6f378c3fa61aa569a55d38feb8570b0b587"
  8534 + integrity sha512-eDuLrL0wzPKbl5/TbNGZcbw0lTIGbDEr5W6lCODvb1gAg0ncbgCRt7oU0C2VFDvbrcY0A3MFZOwltwTRmc0XCw==
8443 8535 dependencies:
8444 8536 "@stylelint/postcss-css-in-js" "^0.37.2"
8445 8537 "@stylelint/postcss-markdown" "^0.36.2"
... ... @@ -8460,7 +8552,7 @@ stylelint@^13.9.0:
8460 8552 ignore "^5.1.8"
8461 8553 import-lazy "^4.0.0"
8462 8554 imurmurhash "^0.1.4"
8463   - known-css-properties "^0.20.0"
  8555 + known-css-properties "^0.21.0"
8464 8556 lodash "^4.17.20"
8465 8557 log-symbols "^4.0.0"
8466 8558 mathml-tag-names "^2.1.3"
... ... @@ -8909,11 +9001,16 @@ typedarray-to-buffer@^3.1.5:
8909 9001 dependencies:
8910 9002 is-typedarray "^1.0.0"
8911 9003  
8912   -typescript@^4.0.3, typescript@^4.1.3:
  9004 +typescript@^4.0.3:
8913 9005 version "4.1.3"
8914 9006 resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
8915 9007 integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
8916 9008  
  9009 +typescript@^4.1.5:
  9010 + version "4.1.5"
  9011 + resolved "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72"
  9012 + integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==
  9013 +
8917 9014 uglify-js@^3.1.4:
8918 9015 version "3.12.5"
8919 9016 resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.5.tgz#83241496087c640efe9dfc934832e71725aba008"
... ... @@ -8972,6 +9069,13 @@ union-value@^1.0.0:
8972 9069 is-extendable "^0.1.1"
8973 9070 set-value "^2.0.1"
8974 9071  
  9072 +union@~0.5.0:
  9073 + version "0.5.0"
  9074 + resolved "https://registry.npmjs.org/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075"
  9075 + integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==
  9076 + dependencies:
  9077 + qs "^6.4.0"
  9078 +
8975 9079 uniq@^1.0.1:
8976 9080 version "1.0.1"
8977 9081 resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
... ... @@ -9062,6 +9166,11 @@ urix@^0.1.0:
9062 9166 resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
9063 9167 integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
9064 9168  
  9169 +url-join@^2.0.5:
  9170 + version "2.0.5"
  9171 + resolved "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728"
  9172 + integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=
  9173 +
9065 9174 url-parse-lax@^1.0.0:
9066 9175 version "1.0.0"
9067 9176 resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
... ... @@ -9154,6 +9263,15 @@ vfile@^4.0.0:
9154 9263 unist-util-stringify-position "^2.0.0"
9155 9264 vfile-message "^2.0.0"
9156 9265  
  9266 +vite-plugin-compression@^0.2.1:
  9267 + version "0.2.1"
  9268 + resolved "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.2.1.tgz#9519f2838c9945fa5f64dda2e9a7c354e86a6d43"
  9269 + integrity sha512-wZilE9pm1qV3PNVzMxCrJkhmnpwtXrf8kC1NekNcvP5lxFbGMwhj0fqedds1ujFSBHripknQaPwLsSXRtFen/Q==
  9270 + dependencies:
  9271 + chalk "^4.1.0"
  9272 + debug "^4.3.2"
  9273 + fs-extra "^9.1.0"
  9274 +
9157 9275 vite-plugin-html@^2.0.0:
9158 9276 version "2.0.0"
9159 9277 resolved "https://registry.npmjs.org/vite-plugin-html/-/vite-plugin-html-2.0.0.tgz#de39b99ce7df4d0e1234bfae5c23215647d71a28"
... ... @@ -9163,10 +9281,10 @@ vite-plugin-html@^2.0.0:
9163 9281 fs-extra "^9.1.0"
9164 9282 html-minifier-terser "^5.1.1"
9165 9283  
9166   -vite-plugin-imagemin@^0.2.5:
9167   - version "0.2.5"
9168   - resolved "https://registry.npmjs.org/vite-plugin-imagemin/-/vite-plugin-imagemin-0.2.5.tgz#926b57f570f55d29081ebbea5c073298e411ef42"
9169   - integrity sha512-wweK2QLJTNIkqEoCXuKJJP1Y+Duu2tA0CKtST6ovzXra4kMx6BQ3nWCRkr66Ye6fQii5yPSuE1ZtTNVLSi9mmw==
  9284 +vite-plugin-imagemin@^0.2.6:
  9285 + version "0.2.6"
  9286 + resolved "https://registry.npmjs.org/vite-plugin-imagemin/-/vite-plugin-imagemin-0.2.6.tgz#e8c3f2e4dcd9c8017d5624b52868bbfa60374d0b"
  9287 + integrity sha512-fnMFMQjQGYdvIEkISkVawFiyttgfjcAzBbDDVR2ThSnV4NHhCh8Y3WuduyH1kpEJLdJ4H83vP+94CkJZy7RP9Q==
9170 9288 dependencies:
9171 9289 "@types/imagemin" "^7.0.0"
9172 9290 "@types/imagemin-gifsicle" "^7.0.0"
... ... @@ -9234,22 +9352,22 @@ vite-plugin-style-import@^0.7.2:
9234 9352 es-module-lexer "^0.3.26"
9235 9353 magic-string "^0.25.7"
9236 9354  
9237   -vite-plugin-theme@^0.4.2:
9238   - version "0.4.2"
9239   - resolved "https://registry.npmjs.org/vite-plugin-theme/-/vite-plugin-theme-0.4.2.tgz#bb4791ddd88205f2fd07ae9aff7a92d5d427b516"
9240   - integrity sha512-NOk56zCYloaVmqWh8o+OShJLVTNVsDZRLEeToHsv0yGXd94gCiYTflguGtcmsSQjQfQYOz/gGKjLAU4KPH/FKA==
  9355 +vite-plugin-theme@^0.4.3:
  9356 + version "0.4.3"
  9357 + resolved "https://registry.npmjs.org/vite-plugin-theme/-/vite-plugin-theme-0.4.3.tgz#d1d92a7d0d63aa0af4703e50ae2cdc0285295bd2"
  9358 + integrity sha512-5qychnrG+iN6+YJmGJT853IT2elr5TIF6I9GkRStVs5GWemR3f/OllLN/AjO1j8vnTG58mttYpyD8N5zGQ/P8w==
9241 9359 dependencies:
9242 9360 "@types/tinycolor2" "^1.4.2"
9243 9361 chalk "^4.1.0"
9244 9362 clean-css "^4.2.3"
9245   - debug "^4.3.1"
  9363 + debug "^4.3.2"
9246 9364 es-module-lexer "^0.3.26"
9247 9365 tinycolor2 "^1.4.2"
9248 9366  
9249   -vite@2.0.0-beta.66:
9250   - version "2.0.0-beta.66"
9251   - resolved "https://registry.npmjs.org/vite/-/vite-2.0.0-beta.66.tgz#f9fbb3490bb235efd73366d8d0974f3e7a3e3d54"
9252   - integrity sha512-tUn708PIWHCrj83t09OAiJ2YU5EJGz5VOSivKTPq+s5I48rN4B2B3ZTRpg4n8WMw2ZQLWnrQOXWfqXoMBEJd9g==
  9367 +vite@2.0.0-beta.69:
  9368 + version "2.0.0-beta.69"
  9369 + resolved "https://registry.npmjs.org/vite/-/vite-2.0.0-beta.69.tgz#dd10b4c366d64e670a0da612097fe9645c40212b"
  9370 + integrity sha512-Wf4bWOK/b6Q+06Wyk7uJIBy/LiENGx26do6tn9gOMRRZLEuLizN/cDzGqnQkGVVevbb18xdilyxhnTes0lFjZg==
9253 9371 dependencies:
9254 9372 esbuild "^0.8.34"
9255 9373 postcss "^8.2.1"
... ...