From 777e35b9907f3ffd36785189cd982aef94348c38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ewilan=20Rivi=C3=A8re?= Date: Sun, 1 Oct 2023 10:07:26 +0200 Subject: [PATCH] v1.0.0-alpha.2 - add many options for SVG - remove options for components - add SvgRender class to update SVG from options - add options to library file and `window` - add `title` prop to components - add `reactive` prop to Vue components - remove `display` prop from Vue components --- README.md | 6 +- examples/vue3/src/icons.ts | 35 +- examples/vue3/vite.config.ts | 10 + live/nuxt3/pnpm-lock.yaml | 4 +- live/vue3/pnpm-lock.yaml | 4 +- live/vue3/src/icons.ts | 33 +- package.json | 14 +- pnpm-lock.yaml | 1165 ++++++++++++++++---------- src/index.ts | 2 +- src/lib/Definition/DefinitionFile.ts | 2 +- src/lib/LibraryFile.ts | 34 +- src/lib/Svg/SvgCollection.ts | 20 +- src/lib/Svg/SvgItem.ts | 118 +-- src/lib/Svg/SvgRender.ts | 190 +++++ src/nuxt.ts | 2 +- src/render/NuxtSvg.ts | 25 +- src/render/ReactSvg.tsx | 10 +- src/render/VueSvg.ts | 21 +- src/types.ts | 118 ++- test/plugin.test.ts | 2 +- 20 files changed, 1135 insertions(+), 680 deletions(-) create mode 100644 src/lib/Svg/SvgRender.ts diff --git a/README.md b/README.md index 426f1cc..68fe4b1 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Import easily your SVG. Powered by [unplugin](https://github.com/unjs/unplugin). > Designed to be a replacement of [`kiwilan/nuxt-svg-transformer`](https://github.com/kiwilan/nuxt-svg-transformer), a Nuxt module. -Use SVG into modern tools is not easy, especially when you want to use SVG as component. This plugin will parse your SVG files and create a cache file to import them easily with a library index file. It works with any framework with Vite/Webpack, but some components are ready-to-use for Vue and React. You could also create your own component for your favorite framework. Built for TypeScript, but works with JavaScript. +Use SVG into modern tools is not easy, especially when you want to use SVG as component. **This plugin will parse your SVG files** and **create a cache file** to **import them easily with a library index file**. It **works with any framework with Vite/Webpack**, but some components are ready-to-use for Vue, Nuxt and React. You could also create your own component for your favorite framework. **Built for TypeScript, but works with JavaScript**. > **Warning** > @@ -530,7 +530,7 @@ Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed re - [UnJS](https://github.com/unjs): UnJS team for [`unplugin`](https://github.com/unjs/unplugin) - [`ewilan-riviere`](https://github.com/ewilan-riviere): author -- [`antfu`](https://github.com/antfu/unplugin-starter): for the starter template +- [`antfu`](https://github.com/antfu/unplugin-starter): for the starter template, `@antfu/eslint-config` and his amazing work ## License @@ -548,7 +548,7 @@ The MIT License (MIT). Please see [License File](LICENSE.md) for more informatio [license-href]: https://github.com/kiwilan/unplugin-svg-transformer/blob/main/README.md [tests-src]: https://img.shields.io/github/actions/workflow/status/kiwilan/unplugin-svg-transformer/tests.yml?branch=main&label=tests&style=flat-square&colorA=18181B [tests-href]: https://github.com/kiwilan/unplugin-svg-transformer/actions/workflows/tests.yml -[codecov-src]: https://codecov.io/gh/kiwilan/unplugin-svg-transformer/branch/main/graph/badge.svg?token=epJribIFGR +[codecov-src]: https://img.shields.io/codecov/c/gh/kiwilan/unplugin-svg-transformer/main?style=flat&colorA=18181B&colorB=F0DB4F [codecov-href]: https://codecov.io/gh/kiwilan/unplugin-svg-transformer [style-src]: https://antfu.me/badge-code-style.svg [style-href]: https://github.com/antfu/eslint-config diff --git a/examples/vue3/src/icons.ts b/examples/vue3/src/icons.ts index cbeb0a2..65b722d 100644 --- a/examples/vue3/src/icons.ts +++ b/examples/vue3/src/icons.ts @@ -4,7 +4,29 @@ // @ts-nocheck // Generated by unplugin-svg-transformer export type SvgName = 'download' | 'social/twitter' | 'vite' | 'vue-2' | 'vue' | 'default' -export const options = {"cacheDir":"./node_modules/unplugin-svg-transformer/cache","fallback":"","global":false,"isNuxt":false,"isTesting":true,"libraryDir":"./src","svgDir":"./src/svg","useTypes":true} +export const options = { + fallback: "", + svg: { + classDefault: [ + "svg-icon" + ], + clearSize: "all", + clearClass: "all", + clearStyle: "all", + currentColor: true, + inlineStyleDefault: [ + "display: inline-block; vertical-align: middle;" + ], + sizeInherit: true, + title: true + }, + warning: false, + cacheDir: "./node_modules/unplugin-svg-transformer/cache", + global: false, + libraryDir: "./src", + svgDir: "./src/svg", + useTypes: true +} export const svgList: Record Promise<{ default: string }>> = { 'download': () => import('../node_modules/unplugin-svg-transformer/cache/download.ts'), 'social/twitter': () => import('../node_modules/unplugin-svg-transformer/cache/social/twitter.ts'), @@ -15,13 +37,12 @@ export const svgList: Record Promise<{ default: string }>> = { } export async function importSvg(name: SvgName): Promise { - if (!svgList[name] && options.log) + if (!svgList[name] && options.warning) console.warn(`Icon ${name} not found`) - name = svgList[name] || svgList["default"] - const svg = await name() - if (svg.default) - return svg.default - return svg + const icon = svgList[name] || svgList["default"] + const svg = await icon() + + return svg.default } if (typeof window !== 'undefined') { diff --git a/examples/vue3/vite.config.ts b/examples/vue3/vite.config.ts index a8f38c3..fcc53ab 100644 --- a/examples/vue3/vite.config.ts +++ b/examples/vue3/vite.config.ts @@ -9,6 +9,16 @@ export default defineConfig({ svgTransformer({ // global: true, fallback: '', + svg: { + title: true, + classDefault: ['svg-icon'], + clearClass: 'all', + clearSize: 'all', + clearStyle: 'all', + currentColor: true, + inlineStyleDefault: ['display: inline-block; vertical-align: middle;'], + sizeInherit: true, + }, }), ], }) diff --git a/live/nuxt3/pnpm-lock.yaml b/live/nuxt3/pnpm-lock.yaml index 65bb16b..ea4ab0a 100644 --- a/live/nuxt3/pnpm-lock.yaml +++ b/live/nuxt3/pnpm-lock.yaml @@ -6359,9 +6359,9 @@ packages: dev: true file:../../../../unplugin-svg-transformer.tgz: - resolution: {integrity: sha512-VApyi6niYyk6YN4Aoq8U7rWrD6NAman9FZiYZIdGbLA+jG6Pmq8GkDWD18znuCgAU5WqgbKs54yltGOQep8M0g==, tarball: file:../../../../unplugin-svg-transformer.tgz} + resolution: {integrity: sha512-+SgZ7JsGFisEl2KCNATdyMSMEGkatbFY0MJ4G6nCnE9xM4E7w9YVg1tcOVH6jGuRjC9r64baGwuRpBHRkcUgyw==, tarball: file:../../../../unplugin-svg-transformer.tgz} name: unplugin-svg-transformer - version: 1.0.0-alpha.0 + version: 1.0.0-alpha.2 dependencies: unplugin: 1.5.0 dev: true diff --git a/live/vue3/pnpm-lock.yaml b/live/vue3/pnpm-lock.yaml index 12fa0aa..47233ff 100644 --- a/live/vue3/pnpm-lock.yaml +++ b/live/vue3/pnpm-lock.yaml @@ -706,9 +706,9 @@ packages: dev: true file:../../../../unplugin-svg-transformer.tgz: - resolution: {integrity: sha512-al/ty6cVs3Nyvt2zEsf3ETLu4H/vMAXvgUwmYBRMOl08em3BpoD7XJxIs/F5J3EO1n1IrA/0RK+Q4U05VJfcDw==, tarball: file:../../../../unplugin-svg-transformer.tgz} + resolution: {integrity: sha512-+SgZ7JsGFisEl2KCNATdyMSMEGkatbFY0MJ4G6nCnE9xM4E7w9YVg1tcOVH6jGuRjC9r64baGwuRpBHRkcUgyw==, tarball: file:../../../../unplugin-svg-transformer.tgz} name: unplugin-svg-transformer - version: 1.0.0-alpha.1 + version: 1.0.0-alpha.2 dependencies: unplugin: 1.5.0 dev: true diff --git a/live/vue3/src/icons.ts b/live/vue3/src/icons.ts index b0ad574..6f6b3b9 100644 --- a/live/vue3/src/icons.ts +++ b/live/vue3/src/icons.ts @@ -4,6 +4,22 @@ // @ts-nocheck // Generated by unplugin-svg-transformer export type SvgName = 'download' | 'social/twitter' | 'vite' | 'vue-2' | 'vue' | 'default' +export const options = { + fallback: "", + svg: { + clearSize: "none", + clearClass: "none", + clearStyle: "none", + currentColor: false, + sizeInherit: false + }, + warning: true, + cacheDir: "./node_modules/unplugin-svg-transformer/cache", + global: false, + libraryDir: "./src", + svgDir: "./src/svg", + useTypes: true +} export const svgList: Record Promise<{ default: string }>> = { 'download': () => import('../node_modules/unplugin-svg-transformer/cache/download.ts'), 'social/twitter': () => import('../node_modules/unplugin-svg-transformer/cache/social/twitter.ts'), @@ -14,16 +30,17 @@ export const svgList: Record Promise<{ default: string }>> = { } export async function importSvg(name: SvgName): Promise { - if (!svgList[name]) + if (!svgList[name] && options.warning) console.warn(`Icon ${name} not found`) - name = svgList[name] || svgList["default"] - const svg = await name() - if (svg.default) - return svg.default - return svg + const icon = svgList[name] || svgList["default"] + const svg = await icon() + + return svg.default } if (typeof window !== 'undefined') { - window.svgList = svgList - window.importSvg = importSvg + window.ust = window.ust || {} + window.ust.options = options + window.ust.svgList = svgList + window.ust.importSvg = importSvg } diff --git a/package.json b/package.json index 71fc925..c5ef02c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "unplugin-svg-transformer", "type": "module", - "version": "1.0.0-alpha.1", + "version": "1.0.0-alpha.2", "description": "Import easily your SVG with Vite.", "author": "kiwilan ", "license": "MIT", @@ -126,12 +126,12 @@ "unplugin": "^1.5.0" }, "devDependencies": { - "@antfu/eslint-config": "1.0.0-beta.10", + "@antfu/eslint-config": "1.0.0-beta.18", "@nuxt/kit": "^3.7.4", - "@types/node": "^20.7.0", + "@types/node": "^20.8.0", "@types/react": "^18.2.23", "@vitejs/plugin-vue": "^4.3.4", - "@vitest/coverage-v8": "^0.34.5", + "@vitest/coverage-v8": "^0.34.6", "bumpp": "^9.2.0", "chalk": "^5.3.0", "eslint": "^8.50.0", @@ -140,13 +140,13 @@ "nodemon": "^3.0.1", "nuxt": "^3.7.4", "react": "^18.2.0", - "rimraf": "^5.0.4", - "rollup": "^3.29.3", + "rimraf": "^5.0.5", + "rollup": "^3.29.4", "svelte": "^4.2.1", "tsup": "^7.2.0", "typescript": "^5.2.2", "vite": "^4.4.9", - "vitest": "^0.34.5", + "vitest": "^0.34.6", "vue": "^3.3.4", "webpack": "^5.88.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91b8227..52d38e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,14 +13,14 @@ importers: version: 1.5.0 devDependencies: '@antfu/eslint-config': - specifier: 1.0.0-beta.10 - version: 1.0.0-beta.10(eslint@8.50.0)(typescript@5.2.2) + specifier: 1.0.0-beta.18 + version: 1.0.0-beta.18(eslint@8.50.0)(typescript@5.2.2)(vitest@0.34.6) '@nuxt/kit': specifier: ^3.7.4 - version: 3.7.4(rollup@3.29.3) + version: 3.7.4(rollup@3.29.4) '@types/node': - specifier: ^20.7.0 - version: 20.7.0 + specifier: ^20.8.0 + version: 20.8.0 '@types/react': specifier: ^18.2.23 version: 18.2.23 @@ -28,8 +28,8 @@ importers: specifier: ^4.3.4 version: 4.3.4(vite@4.4.9)(vue@3.3.4) '@vitest/coverage-v8': - specifier: ^0.34.5 - version: 0.34.5(vitest@0.34.5) + specifier: ^0.34.6 + version: 0.34.6(vitest@0.34.6) bumpp: specifier: ^9.2.0 version: 9.2.0 @@ -50,31 +50,31 @@ importers: version: 3.0.1 nuxt: specifier: ^3.7.4 - version: 3.7.4(@types/node@20.7.0)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2) + version: 3.7.4(@types/node@20.8.0)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2) react: specifier: ^18.2.0 version: 18.2.0 rimraf: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.0.5 + version: 5.0.5 rollup: - specifier: ^3.29.3 - version: 3.29.3 + specifier: ^3.29.4 + version: 3.29.4 svelte: specifier: ^4.2.1 version: 4.2.1 tsup: specifier: ^7.2.0 - version: 7.2.0(postcss@8.4.30)(typescript@5.2.2) + version: 7.2.0(postcss@8.4.31)(typescript@5.2.2) typescript: specifier: ^5.2.2 version: 5.2.2 vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.0) + version: 4.4.9(@types/node@20.8.0) vitest: - specifier: ^0.34.5 - version: 0.34.5 + specifier: ^0.34.6 + version: 0.34.6 vue: specifier: ^3.3.4 version: 3.3.4 @@ -86,22 +86,22 @@ importers: devDependencies: vite: specifier: ^4.3.9 - version: 4.3.9(@types/node@20.7.0) + version: 4.3.9(@types/node@20.8.0) vite-plugin-inspect: specifier: ^0.7.28 - version: 0.7.28(rollup@3.29.3)(vite@4.3.9) + version: 0.7.28(rollup@3.29.4)(vite@4.3.9) examples/nuxt3: devDependencies: '@nuxt/devtools': specifier: latest - version: 0.8.5(nuxt@3.7.3)(rollup@3.29.3)(vite@4.4.9) + version: 0.8.5(nuxt@3.7.3)(rollup@3.29.4)(vite@4.4.9) '@types/node': specifier: ^18.16.19 version: 18.16.19 nuxt: specifier: ^3.7.3 - version: 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2) + version: 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2) examples/react: dependencies: @@ -141,7 +141,7 @@ importers: version: 5.1.3 vite: specifier: ^4.4.0 - version: 4.4.0(@types/node@20.7.0) + version: 4.4.0(@types/node@20.8.0) examples/svelte: devDependencies: @@ -156,7 +156,7 @@ importers: version: 4.2.0 svelte-check: specifier: ^3.4.6 - version: 3.5.2(@babel/core@7.23.0)(postcss@8.4.30)(svelte@4.2.0) + version: 3.5.2(@babel/core@7.23.0)(postcss@8.4.31)(svelte@4.2.0) tslib: specifier: ^2.6.0 version: 2.6.2 @@ -165,7 +165,7 @@ importers: version: 5.2.2 vite: specifier: ^4.4.5 - version: 4.4.9(@types/node@20.7.0) + version: 4.4.9(@types/node@20.8.0) examples/ts: devDependencies: @@ -174,7 +174,7 @@ importers: version: 5.1.3 vite: specifier: ^4.4.0 - version: 4.4.0(@types/node@20.7.0) + version: 4.4.0(@types/node@20.8.0) examples/vue3: dependencies: @@ -190,7 +190,7 @@ importers: version: 5.1.3 vite: specifier: ^4.3.9 - version: 4.3.9(@types/node@20.7.0) + version: 4.3.9(@types/node@20.8.0) vue-tsc: specifier: ^1.4.2 version: 1.4.2(typescript@5.1.3) @@ -199,10 +199,10 @@ importers: devDependencies: vite: specifier: ^4.3.9 - version: 4.3.9(@types/node@20.7.0) + version: 4.3.9(@types/node@20.8.0) vite-plugin-inspect: specifier: ^0.7.28 - version: 0.7.28(rollup@3.29.3)(vite@4.3.9) + version: 0.7.28(rollup@3.29.4)(vite@4.3.9) packages: @@ -219,18 +219,18 @@ packages: '@jridgewell/trace-mapping': 0.3.19 dev: true - /@antfu/eslint-config@1.0.0-beta.10(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-HemQkcPpb2trszxlFjBZqj1SJJWY3WBHurpQX4VKa3dtGCUjCgVwqc3BepE2TwVY2Oqz+AmIKOyvYeHSRXYS5w==} + /@antfu/eslint-config@1.0.0-beta.18(eslint@8.50.0)(typescript@5.2.2)(vitest@0.34.6): + resolution: {integrity: sha512-WfVw0PCrNOHYcRkYY2YpVmuXYjWSVd/B59i4BEK6djaeRvE7F5bQXTt71Y6wi5jWUkL+iwMQ7gGqgXexpILPPw==} peerDependencies: eslint: '>=8.0.0' dependencies: - '@stylistic/eslint-plugin': 0.0.5(eslint@8.50.0)(typescript@5.2.2) + '@stylistic/eslint-plugin': 0.0.6(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/eslint-plugin': 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) eslint: 8.50.0 eslint-config-flat-gitignore: 0.1.0 eslint-define-config: 1.23.0 - eslint-plugin-antfu: 1.0.0-beta.6(eslint@8.50.0)(typescript@5.2.2) + eslint-plugin-antfu: 1.0.0-beta.9(eslint@8.50.0)(typescript@5.2.2) eslint-plugin-eslint-comments: 3.2.0(eslint@8.50.0) eslint-plugin-i: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint@8.50.0) eslint-plugin-jsdoc: 46.8.2(eslint@8.50.0) @@ -240,6 +240,7 @@ packages: eslint-plugin-no-only-tests: 3.1.0 eslint-plugin-unicorn: 48.0.1(eslint@8.50.0) eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.7.3)(eslint@8.50.0) + eslint-plugin-vitest: 0.3.1(@typescript-eslint/eslint-plugin@6.7.3)(eslint@8.50.0)(vitest@0.34.6) eslint-plugin-vue: 9.17.0(eslint@8.50.0) eslint-plugin-yml: 1.9.0(eslint@8.50.0) globals: 13.22.0 @@ -252,6 +253,7 @@ packages: - eslint-import-resolver-webpack - supports-color - typescript + - vitest dev: true /@antfu/utils@0.7.4: @@ -366,7 +368,7 @@ packages: dependencies: '@babel/compat-data': 7.22.20 '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.11 + browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 dev: true @@ -859,6 +861,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.19.4: + resolution: {integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.17.19: resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -895,6 +906,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.19.4: + resolution: {integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.17.19: resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -931,6 +951,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.19.4: + resolution: {integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -967,6 +996,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.19.4: + resolution: {integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -1003,6 +1041,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.19.4: + resolution: {integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -1039,6 +1086,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.19.4: + resolution: {integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -1075,6 +1131,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.19.4: + resolution: {integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.17.19: resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -1111,6 +1176,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.19.4: + resolution: {integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.17.19: resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -1147,6 +1221,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.19.4: + resolution: {integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -1183,6 +1266,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.19.4: + resolution: {integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.17.19: resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -1219,6 +1311,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.19.4: + resolution: {integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.17.19: resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -1255,6 +1356,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.19.4: + resolution: {integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -1291,6 +1401,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.19.4: + resolution: {integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -1327,6 +1446,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.19.4: + resolution: {integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -1363,6 +1491,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.19.4: + resolution: {integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -1399,6 +1536,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.19.4: + resolution: {integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -1435,6 +1581,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.19.4: + resolution: {integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -1471,6 +1626,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.19.4: + resolution: {integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -1507,6 +1671,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.19.4: + resolution: {integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -1543,6 +1716,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.19.4: + resolution: {integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -1579,6 +1761,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.19.4: + resolution: {integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -1615,6 +1806,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.19.4: + resolution: {integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1640,8 +1840,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint-community/regexpp@4.8.2: - resolution: {integrity: sha512-0MGxAVt1m/ZK+LTJp/j0qF7Hz97D9O/FH9Ms3ltnyIdDD57cbb1ACIQTkbHvNXtWDv5TPq7w5Kq56+cNukbo7g==} + /@eslint-community/regexpp@4.9.0: + resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -1961,16 +2161,16 @@ packages: resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} dev: true - /@nuxt/devtools-kit@0.8.5(nuxt@3.7.3)(rollup@3.29.3)(vite@4.4.9): + /@nuxt/devtools-kit@0.8.5(nuxt@3.7.3)(rollup@3.29.4)(vite@4.4.9): resolution: {integrity: sha512-gkZuythYbx6ybwQc2zE1DC40B3cj3rrSxHG6GIihWseilTea7G4QMkDliEbGnqyM4cLQmMBD+SU4DxiDVSNlQQ==} peerDependencies: nuxt: ^3.7.3 vite: '*' dependencies: - '@nuxt/kit': 3.7.4(rollup@3.29.3) - '@nuxt/schema': 3.7.4(rollup@3.29.3) + '@nuxt/kit': 3.7.4(rollup@3.29.4) + '@nuxt/schema': 3.7.4(rollup@3.29.4) execa: 7.2.0 - nuxt: 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2) + nuxt: 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2) vite: 4.4.9(@types/node@18.16.19) transitivePeerDependencies: - rollup @@ -1993,7 +2193,7 @@ packages: semver: 7.5.4 dev: true - /@nuxt/devtools@0.8.5(nuxt@3.7.3)(rollup@3.29.3)(vite@4.4.9): + /@nuxt/devtools@0.8.5(nuxt@3.7.3)(rollup@3.29.4)(vite@4.4.9): resolution: {integrity: sha512-xNogUcv257gj/1NreQ0TiS7SqalHRoDYkPM5zaBbimBtUa7tlmtpbI/VpFrkpVbHOvBpPWk8JMMFkIDScYyMyw==} hasBin: true peerDependencies: @@ -2001,9 +2201,9 @@ packages: vite: '*' dependencies: '@antfu/utils': 0.7.6 - '@nuxt/devtools-kit': 0.8.5(nuxt@3.7.3)(rollup@3.29.3)(vite@4.4.9) + '@nuxt/devtools-kit': 0.8.5(nuxt@3.7.3)(rollup@3.29.4)(vite@4.4.9) '@nuxt/devtools-wizard': 0.8.5 - '@nuxt/kit': 3.7.4(rollup@3.29.3) + '@nuxt/kit': 3.7.4(rollup@3.29.4) birpc: 0.2.14 consola: 3.2.3 error-stack-parser-es: 0.1.1 @@ -2012,14 +2212,14 @@ packages: flatted: 3.2.9 get-port-please: 3.1.1 global-dirs: 3.0.1 - h3: 1.8.1 + h3: 1.8.2 hookable: 5.5.3 image-meta: 0.1.1 is-installed-globally: 0.4.0 launch-editor: 2.6.0 local-pkg: 0.4.3 magicast: 0.3.0 - nuxt: 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2) + nuxt: 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2) nypm: 0.3.3 ofetch: 1.3.3 ohash: 1.1.3 @@ -2031,9 +2231,9 @@ packages: semver: 7.5.4 simple-git: 3.20.0 sirv: 2.0.3 - unimport: 3.4.0(rollup@3.29.3) + unimport: 3.4.0(rollup@3.29.4) vite: 4.4.9(@types/node@18.16.19) - vite-plugin-inspect: 0.7.38(@nuxt/kit@3.7.4)(rollup@3.29.3)(vite@4.4.9) + vite-plugin-inspect: 0.7.38(@nuxt/kit@3.7.4)(rollup@3.29.4)(vite@4.4.9) vite-plugin-vue-inspector: 3.7.1(vite@4.4.9) wait-on: 7.0.1 which: 3.0.1 @@ -2047,11 +2247,11 @@ packages: - utf-8-validate dev: true - /@nuxt/kit@3.7.3(rollup@3.29.3): + /@nuxt/kit@3.7.3(rollup@3.29.4): resolution: {integrity: sha512-bhP02i6CNti15Z4ix3LpR3fd1ANtTcpfS3CDSaCja24hDt3UxIasyp52mqD9LRC+OxrUVHJziB18EwUtS6RLDQ==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - '@nuxt/schema': 3.7.3(rollup@3.29.3) + '@nuxt/schema': 3.7.3(rollup@3.29.4) c12: 1.4.2 consola: 3.2.3 defu: 6.1.2 @@ -2067,18 +2267,18 @@ packages: semver: 7.5.4 ufo: 1.3.0 unctx: 2.3.1 - unimport: 3.3.0(rollup@3.29.3) + unimport: 3.3.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/kit@3.7.4(rollup@3.29.3): + /@nuxt/kit@3.7.4(rollup@3.29.4): resolution: {integrity: sha512-/S5abZL62BITCvC/TY3KWA6N721U1Osln3cQdBb56XHIeafZCBVqTi92Xb0o7ovl72mMRhrKwRu7elzvz9oT/g==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - '@nuxt/schema': 3.7.4(rollup@3.29.3) + '@nuxt/schema': 3.7.4(rollup@3.29.4) c12: 1.4.2 consola: 3.2.3 defu: 6.1.2 @@ -2092,16 +2292,16 @@ packages: pkg-types: 1.0.3 scule: 1.0.0 semver: 7.5.4 - ufo: 1.3.0 + ufo: 1.3.1 unctx: 2.3.1 - unimport: 3.4.0(rollup@3.29.3) + unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/schema@3.7.3(rollup@3.29.3): + /@nuxt/schema@3.7.3(rollup@3.29.4): resolution: {integrity: sha512-Uqe3Z9RnAROzv5owQo//PztD9d4csKK6ulwQO1hIAinCh34X7z2zrv9lhm14hlRYU1n7ISEi4S7UeHgL/r8d8A==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: @@ -2113,14 +2313,14 @@ packages: postcss-import-resolver: 2.0.0 std-env: 3.4.3 ufo: 1.3.0 - unimport: 3.3.0(rollup@3.29.3) + unimport: 3.3.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/schema@3.7.4(rollup@3.29.3): + /@nuxt/schema@3.7.4(rollup@3.29.4): resolution: {integrity: sha512-q6js+97vDha4Fa2x2kDVEuokJr+CGIh1TY2wZp2PLZ7NhG3XEeib7x9Hq8XE8B6pD0GKBRy3eRPPOY69gekBCw==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: @@ -2132,19 +2332,19 @@ packages: pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 std-env: 3.4.3 - ufo: 1.3.0 - unimport: 3.4.0(rollup@3.29.3) + ufo: 1.3.1 + unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/telemetry@2.4.1(rollup@3.29.3): + /@nuxt/telemetry@2.4.1(rollup@3.29.4): resolution: {integrity: sha512-Cj+4sXjO5pZNW2sX7Y+djYpf4pZwgYF3rV/YHLWIOq9nAjo2UcDXjh1z7qnhkoUkvJN3lHnvhnCNhfAioe6k/A==} hasBin: true dependencies: - '@nuxt/kit': 3.7.3(rollup@3.29.3) + '@nuxt/kit': 3.7.3(rollup@3.29.4) chalk: 5.3.0 ci-info: 3.8.0 consola: 3.2.3 @@ -2169,11 +2369,11 @@ packages: - supports-color dev: true - /@nuxt/telemetry@2.5.0(rollup@3.29.3): + /@nuxt/telemetry@2.5.0(rollup@3.29.4): resolution: {integrity: sha512-7vZyOHfCAZg1PuCwy3B87MQOezW4pf8BC3gNDL92FW24BuLF0dl/BbFfxPeRxvjivuj5kkNM78x/qzNRCKfZgw==} hasBin: true dependencies: - '@nuxt/kit': 3.7.4(rollup@3.29.3) + '@nuxt/kit': 3.7.4(rollup@3.29.4) chalk: 5.3.0 ci-info: 3.8.0 consola: 3.2.3 @@ -2202,20 +2402,20 @@ packages: resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==} dev: true - /@nuxt/vite-builder@3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2)(vue@3.3.4): + /@nuxt/vite-builder@3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2)(vue@3.3.4): resolution: {integrity: sha512-WbPYku1YKtdqLo5t3Vcs/2xOP8Es9K0OR0uGirdVMp74l4ZOMWBGSW9s4psiihjnNdHURdodD0cuE3tse9t7PA==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: vue: ^3.3.4 dependencies: - '@nuxt/kit': 3.7.3(rollup@3.29.3) - '@rollup/plugin-replace': 5.0.2(rollup@3.29.3) + '@nuxt/kit': 3.7.3(rollup@3.29.4) + '@rollup/plugin-replace': 5.0.2(rollup@3.29.4) '@vitejs/plugin-vue': 4.3.4(vite@4.4.9)(vue@3.3.4) '@vitejs/plugin-vue-jsx': 3.0.2(vite@4.4.9)(vue@3.3.4) - autoprefixer: 10.4.15(postcss@8.4.30) + autoprefixer: 10.4.15(postcss@8.4.31) clear: 0.1.0 consola: 3.2.3 - cssnano: 6.0.1(postcss@8.4.30) + cssnano: 6.0.1(postcss@8.4.31) defu: 6.1.2 esbuild: 0.19.3 escape-string-regexp: 5.0.0 @@ -2231,10 +2431,10 @@ packages: pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 - postcss: 8.4.30 - postcss-import: 15.1.0(postcss@8.4.30) - postcss-url: 10.1.3(postcss@8.4.30) - rollup-plugin-visualizer: 5.9.2(rollup@3.29.3) + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-url: 10.1.3(postcss@8.4.31) + rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) std-env: 3.4.3 strip-literal: 1.3.0 ufo: 1.3.0 @@ -2264,45 +2464,45 @@ packages: - vue-tsc dev: true - /@nuxt/vite-builder@3.7.4(@types/node@20.7.0)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2)(vue@3.3.4): + /@nuxt/vite-builder@3.7.4(@types/node@20.8.0)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2)(vue@3.3.4): resolution: {integrity: sha512-EWZlUzYvkSfIZPA0pQoi7P++68Mlvf5s/G3GBPksS5JB/9l3yZTX+ZqGvLeORSBmoEpJ6E2oMn2WvCHV0W5y6Q==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: vue: ^3.3.4 dependencies: - '@nuxt/kit': 3.7.4(rollup@3.29.3) - '@rollup/plugin-replace': 5.0.2(rollup@3.29.3) + '@nuxt/kit': 3.7.4(rollup@3.29.4) + '@rollup/plugin-replace': 5.0.2(rollup@3.29.4) '@vitejs/plugin-vue': 4.3.4(vite@4.4.9)(vue@3.3.4) '@vitejs/plugin-vue-jsx': 3.0.2(vite@4.4.9)(vue@3.3.4) - autoprefixer: 10.4.16(postcss@8.4.30) + autoprefixer: 10.4.16(postcss@8.4.31) clear: 0.1.0 consola: 3.2.3 - cssnano: 6.0.1(postcss@8.4.30) + cssnano: 6.0.1(postcss@8.4.31) defu: 6.1.2 - esbuild: 0.19.3 + esbuild: 0.19.4 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 externality: 1.0.2 fs-extra: 11.1.1 get-port-please: 3.1.1 - h3: 1.8.1 + h3: 1.8.2 knitwork: 1.0.0 - magic-string: 0.30.3 + magic-string: 0.30.4 mlly: 1.4.2 ohash: 1.1.3 pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 - postcss: 8.4.30 - postcss-import: 15.1.0(postcss@8.4.30) - postcss-url: 10.1.3(postcss@8.4.30) - rollup-plugin-visualizer: 5.9.2(rollup@3.29.3) + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-url: 10.1.3(postcss@8.4.31) + rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) std-env: 3.4.3 strip-literal: 1.3.0 - ufo: 1.3.0 + ufo: 1.3.1 unplugin: 1.5.0 - vite: 4.4.9(@types/node@20.7.0) - vite-node: 0.33.0(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) + vite-node: 0.33.0(@types/node@20.8.0) vite-plugin-checker: 0.6.2(eslint@8.50.0)(typescript@5.2.2)(vite@4.4.9) vue: 3.3.4 vue-bundle-renderer: 2.0.0 @@ -2479,7 +2679,7 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/plugin-alias@5.0.0(rollup@3.29.3): + /@rollup/plugin-alias@5.0.0(rollup@3.29.4): resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2488,11 +2688,11 @@ packages: rollup: optional: true dependencies: - rollup: 3.29.3 + rollup: 3.29.4 slash: 4.0.0 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.3): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.4): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2501,16 +2701,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-inject@5.0.3(rollup@3.29.3): + /@rollup/plugin-inject@5.0.3(rollup@3.29.4): resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2519,13 +2719,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) estree-walker: 2.0.2 magic-string: 0.27.0 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-json@6.0.0(rollup@3.29.3): + /@rollup/plugin-json@6.0.0(rollup@3.29.4): resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2534,11 +2734,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) - rollup: 3.29.3 + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + rollup: 3.29.4 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.3): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.4): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2547,16 +2747,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.6 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.3): + /@rollup/plugin-replace@5.0.2(rollup@3.29.4): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2565,12 +2765,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) magic-string: 0.27.0 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-terser@0.4.3(rollup@3.29.3): + /@rollup/plugin-terser@0.4.3(rollup@3.29.4): resolution: {integrity: sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2579,13 +2779,13 @@ packages: rollup: optional: true dependencies: - rollup: 3.29.3 + rollup: 3.29.4 serialize-javascript: 6.0.1 smob: 1.4.0 terser: 5.17.7 dev: true - /@rollup/plugin-wasm@6.2.1(rollup@3.29.3): + /@rollup/plugin-wasm@6.2.1(rollup@3.29.4): resolution: {integrity: sha512-WDMmM+4121/DId2uLdhvhC08SqaZVoYfLr1IeVj28jJn9GqPoJCdVzUaaevhIU6nJiZ+EYPZT0xOxsNQUFrQsQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2594,8 +2794,8 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) - rollup: 3.29.3 + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + rollup: 3.29.4 dev: true /@rollup/pluginutils@4.2.1: @@ -2606,7 +2806,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.29.3): + /@rollup/pluginutils@5.0.2(rollup@3.29.4): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2618,10 +2818,10 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.3): + /@rollup/pluginutils@5.0.4(rollup@3.29.4): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2633,7 +2833,7 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.3 + rollup: 3.29.4 dev: true /@sideway/address@4.1.4: @@ -2687,23 +2887,26 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@stylistic/eslint-plugin-js@0.0.5: - resolution: {integrity: sha512-Ca3DAk4lHGELPHnHIOUc/SF3Pg58xd/AATqNMSTSoxjoadRk6MGDblriURXjEg7gif4ygiB3+EcIuphAceFYvQ==} + /@stylistic/eslint-plugin-js@0.0.6(eslint@8.50.0): + resolution: {integrity: sha512-TAwD0mCMtXRUErqHrxsGKE/m5UtQWUZOg+HuNNeZXtHoGsp/A3KNfCJkhf5yRiPxwjOUuxQH1f4ANQqKd6rzmQ==} dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) acorn: 8.10.0 escape-string-regexp: 4.0.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 esutils: 2.0.3 graphemer: 1.4.0 + transitivePeerDependencies: + - eslint dev: true - /@stylistic/eslint-plugin-ts@0.0.5(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-Ei/arToTJEF2nxxJLsXqK9qMxPgZi8IyM2X+1q8HRA11Q3zRMut8u1B1zwE8q9EhorBwZsgnmphgzmDG0Mot+w==} + /@stylistic/eslint-plugin-ts@0.0.6(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-eI8K4I9G1AwzsEAykNFv85KHpuHEB0pB4dmbt3lHHfPAVHxvKn+vvRQSNW/wB7giGrzn5uCVBNA7DON6mWhqqg==} peerDependencies: eslint: '*' dependencies: - '@stylistic/eslint-plugin-js': 0.0.5 + '@stylistic/eslint-plugin-js': 0.0.6(eslint@8.50.0) '@typescript-eslint/scope-manager': 6.7.3 '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) @@ -2714,13 +2917,13 @@ packages: - typescript dev: true - /@stylistic/eslint-plugin@0.0.5(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-8InMNsdJrQqdKxCxd7Zc8HCYg2p5a4XXkqxRzjG7Soy+RWQdj7bAGfTmaDWB0i28CffYabOfOsAgRlfG9oe3Wg==} + /@stylistic/eslint-plugin@0.0.6(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-biU1+SgcnebsnVAXju0+szDW24Aaom0KesyUlOiqS2tuja7kzDxrgz2CJ6pTdj1fsF7Fu+pn0hgSMOnNf46qyw==} peerDependencies: eslint: '*' dependencies: - '@stylistic/eslint-plugin-js': 0.0.5 - '@stylistic/eslint-plugin-ts': 0.0.5(eslint@8.50.0)(typescript@5.2.2) + '@stylistic/eslint-plugin-js': 0.0.6(eslint@8.50.0) + '@stylistic/eslint-plugin-ts': 0.0.6(eslint@8.50.0)(typescript@5.2.2) eslint: 8.50.0 transitivePeerDependencies: - supports-color @@ -2738,7 +2941,7 @@ packages: '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.0)(vite@4.4.9) debug: 4.3.4 svelte: 4.2.0 - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) transitivePeerDependencies: - supports-color dev: true @@ -2757,7 +2960,7 @@ packages: magic-string: 0.30.3 svelte: 4.2.0 svelte-hmr: 0.15.3(svelte@4.2.0) - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color @@ -2829,7 +3032,7 @@ packages: /@types/http-proxy@1.17.12: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 20.7.0 + '@types/node': 20.8.0 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -2844,8 +3047,8 @@ packages: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true - /@types/mdast@3.0.12: - resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + /@types/mdast@3.0.13: + resolution: {integrity: sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==} dependencies: '@types/unist': 2.0.8 dev: true @@ -2854,8 +3057,8 @@ packages: resolution: {integrity: sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==} dev: true - /@types/node@20.7.0: - resolution: {integrity: sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==} + /@types/node@20.8.0: + resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} dev: true /@types/normalize-package-data@2.4.2: @@ -2959,7 +3162,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.2 + '@eslint-community/regexpp': 4.9.0 '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 6.7.3 '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) @@ -3192,7 +3395,7 @@ packages: resolution: {integrity: sha512-wUL4CK0NSEm3KH4kYsiqVYQw5xBk1hpBi5tiNj0BTZgpQVrRufICdK5EHA9Fh7OIAR6tOTWwTvsf5+nK0BgQDA==} dependencies: hookable: 5.5.3 - zhead: 2.1.1 + zhead: 2.1.2 dev: true /@unhead/shared@1.7.4: @@ -3251,7 +3454,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.8) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.8) react-refresh: 0.14.0 - vite: 4.4.0(@types/node@20.7.0) + vite: 4.4.0(@types/node@20.8.0) transitivePeerDependencies: - supports-color dev: true @@ -3266,7 +3469,7 @@ packages: '@babel/core': 7.23.0 '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.0) '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.0) - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) vue: 3.3.4 transitivePeerDependencies: - supports-color @@ -3279,7 +3482,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.3.9(@types/node@20.7.0) + vite: 4.3.9(@types/node@20.8.0) vue: 3.3.4 dev: true @@ -3290,12 +3493,12 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) vue: 3.3.4 dev: true - /@vitest/coverage-v8@0.34.5(vitest@0.34.5): - resolution: {integrity: sha512-97xjhRTSdmeeHCm2nNHhT3hLsMYkAhHXm/rwj6SZ3voka8xiCJrwgtfIjoZIFEL4OO0KezGmVuHWQXcMunULIA==} + /@vitest/coverage-v8@0.34.6(vitest@0.34.6): + resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} peerDependencies: vitest: '>=0.32.0 <1' dependencies: @@ -3305,48 +3508,48 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - magic-string: 0.30.3 + magic-string: 0.30.4 picocolors: 1.0.0 std-env: 3.4.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.34.5 + vitest: 0.34.6 transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.34.5: - resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 - chai: 4.3.8 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true - /@vitest/runner@0.34.5: - resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: - '@vitest/utils': 0.34.5 + '@vitest/utils': 0.34.6 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.5: - resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.3 + magic-string: 0.30.4 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/spy@0.34.5: - resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.5: - resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 @@ -3397,7 +3600,7 @@ packages: - typescript dev: true - /@vue-macros/common@1.8.0(rollup@3.29.3)(vue@3.3.4): + /@vue-macros/common@1.8.0(rollup@3.29.4)(vue@3.3.4): resolution: {integrity: sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==} engines: {node: '>=16.14.0'} peerDependencies: @@ -3407,9 +3610,9 @@ packages: optional: true dependencies: '@babel/types': 7.23.0 - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) '@vue/compiler-sfc': 3.3.4 - ast-kit: 0.11.2(rollup@3.29.3) + ast-kit: 0.11.2(rollup@3.29.4) local-pkg: 0.4.3 magic-string-ast: 0.3.0 vue: 3.3.4 @@ -3841,23 +4044,23 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-kit@0.11.2(rollup@3.29.3): + /ast-kit@0.11.2(rollup@3.29.4): resolution: {integrity: sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==} engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.0 - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) pathe: 1.1.1 transitivePeerDependencies: - rollup dev: true - /ast-kit@0.9.5(rollup@3.29.3): + /ast-kit@0.9.5(rollup@3.29.4): resolution: {integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==} engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.0 - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) pathe: 1.1.1 transitivePeerDependencies: - rollup @@ -3871,12 +4074,12 @@ packages: '@babel/types': 7.22.19 dev: true - /ast-walker-scope@0.5.0(rollup@3.29.3): + /ast-walker-scope@0.5.0(rollup@3.29.4): resolution: {integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==} engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.0 - ast-kit: 0.9.5(rollup@3.29.3) + ast-kit: 0.9.5(rollup@3.29.4) transitivePeerDependencies: - rollup dev: true @@ -3893,35 +4096,35 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /autoprefixer@10.4.15(postcss@8.4.30): + /autoprefixer@10.4.15(postcss@8.4.31): resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.11 + browserslist: 4.22.1 caniuse-lite: 1.0.30001534 fraction.js: 4.3.6 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /autoprefixer@10.4.16(postcss@8.4.30): + /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.11 - caniuse-lite: 1.0.30001539 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001541 fraction.js: 4.3.6 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true @@ -3997,26 +4200,26 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.21.11: - resolution: {integrity: sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==} + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001539 - electron-to-chromium: 1.4.529 + caniuse-lite: 1.0.30001513 + electron-to-chromium: 1.4.454 node-releases: 2.0.13 - update-browserslist-db: 1.0.13(browserslist@4.21.11) + update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001513 - electron-to-chromium: 1.4.454 + caniuse-lite: 1.0.30001541 + electron-to-chromium: 1.4.537 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true /buffer-crc32@0.2.13: @@ -4106,9 +4309,9 @@ packages: dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 - glob: 10.3.9 + glob: 10.3.10 lru-cache: 7.18.3 - minipass: 7.0.3 + minipass: 7.0.4 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -4124,9 +4327,9 @@ packages: dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 - glob: 10.3.9 + glob: 10.3.10 lru-cache: 10.0.1 - minipass: 7.0.3 + minipass: 7.0.4 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -4153,8 +4356,8 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.21.11 - caniuse-lite: 1.0.30001539 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001541 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true @@ -4167,16 +4370,16 @@ packages: resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==} dev: true - /caniuse-lite@1.0.30001539: - resolution: {integrity: sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==} + /caniuse-lite@1.0.30001541: + resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==} dev: true - /chai@4.3.8: - resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 get-func-name: 2.0.2 loupe: 2.3.6 @@ -4218,8 +4421,10 @@ packages: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 dev: true /chokidar@3.5.3: @@ -4441,13 +4646,13 @@ packages: which: 2.0.2 dev: true - /css-declaration-sorter@6.4.1(postcss@8.4.30): + /css-declaration-sorter@6.4.1(postcss@8.4.31): resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} engines: {node: ^10 || ^12 || >=14} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true /css-select@5.1.0: @@ -4487,62 +4692,62 @@ packages: hasBin: true dev: true - /cssnano-preset-default@6.0.1(postcss@8.4.30): + /cssnano-preset-default@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.30) - cssnano-utils: 4.0.0(postcss@8.4.30) - postcss: 8.4.30 - postcss-calc: 9.0.1(postcss@8.4.30) - postcss-colormin: 6.0.0(postcss@8.4.30) - postcss-convert-values: 6.0.0(postcss@8.4.30) - postcss-discard-comments: 6.0.0(postcss@8.4.30) - postcss-discard-duplicates: 6.0.0(postcss@8.4.30) - postcss-discard-empty: 6.0.0(postcss@8.4.30) - postcss-discard-overridden: 6.0.0(postcss@8.4.30) - postcss-merge-longhand: 6.0.0(postcss@8.4.30) - postcss-merge-rules: 6.0.1(postcss@8.4.30) - postcss-minify-font-values: 6.0.0(postcss@8.4.30) - postcss-minify-gradients: 6.0.0(postcss@8.4.30) - postcss-minify-params: 6.0.0(postcss@8.4.30) - postcss-minify-selectors: 6.0.0(postcss@8.4.30) - postcss-normalize-charset: 6.0.0(postcss@8.4.30) - postcss-normalize-display-values: 6.0.0(postcss@8.4.30) - postcss-normalize-positions: 6.0.0(postcss@8.4.30) - postcss-normalize-repeat-style: 6.0.0(postcss@8.4.30) - postcss-normalize-string: 6.0.0(postcss@8.4.30) - postcss-normalize-timing-functions: 6.0.0(postcss@8.4.30) - postcss-normalize-unicode: 6.0.0(postcss@8.4.30) - postcss-normalize-url: 6.0.0(postcss@8.4.30) - postcss-normalize-whitespace: 6.0.0(postcss@8.4.30) - postcss-ordered-values: 6.0.0(postcss@8.4.30) - postcss-reduce-initial: 6.0.0(postcss@8.4.30) - postcss-reduce-transforms: 6.0.0(postcss@8.4.30) - postcss-svgo: 6.0.0(postcss@8.4.30) - postcss-unique-selectors: 6.0.0(postcss@8.4.30) - dev: true - - /cssnano-utils@4.0.0(postcss@8.4.30): + css-declaration-sorter: 6.4.1(postcss@8.4.31) + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-calc: 9.0.1(postcss@8.4.31) + postcss-colormin: 6.0.0(postcss@8.4.31) + postcss-convert-values: 6.0.0(postcss@8.4.31) + postcss-discard-comments: 6.0.0(postcss@8.4.31) + postcss-discard-duplicates: 6.0.0(postcss@8.4.31) + postcss-discard-empty: 6.0.0(postcss@8.4.31) + postcss-discard-overridden: 6.0.0(postcss@8.4.31) + postcss-merge-longhand: 6.0.0(postcss@8.4.31) + postcss-merge-rules: 6.0.1(postcss@8.4.31) + postcss-minify-font-values: 6.0.0(postcss@8.4.31) + postcss-minify-gradients: 6.0.0(postcss@8.4.31) + postcss-minify-params: 6.0.0(postcss@8.4.31) + postcss-minify-selectors: 6.0.0(postcss@8.4.31) + postcss-normalize-charset: 6.0.0(postcss@8.4.31) + postcss-normalize-display-values: 6.0.0(postcss@8.4.31) + postcss-normalize-positions: 6.0.0(postcss@8.4.31) + postcss-normalize-repeat-style: 6.0.0(postcss@8.4.31) + postcss-normalize-string: 6.0.0(postcss@8.4.31) + postcss-normalize-timing-functions: 6.0.0(postcss@8.4.31) + postcss-normalize-unicode: 6.0.0(postcss@8.4.31) + postcss-normalize-url: 6.0.0(postcss@8.4.31) + postcss-normalize-whitespace: 6.0.0(postcss@8.4.31) + postcss-ordered-values: 6.0.0(postcss@8.4.31) + postcss-reduce-initial: 6.0.0(postcss@8.4.31) + postcss-reduce-transforms: 6.0.0(postcss@8.4.31) + postcss-svgo: 6.0.0(postcss@8.4.31) + postcss-unique-selectors: 6.0.0(postcss@8.4.31) + dev: true + + /cssnano-utils@4.0.0(postcss@8.4.31): resolution: {integrity: sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true - /cssnano@6.0.1(postcss@8.4.30): + /cssnano@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 6.0.1(postcss@8.4.30) + cssnano-preset-default: 6.0.1(postcss@8.4.31) lilconfig: 2.1.0 - postcss: 8.4.30 + postcss: 8.4.31 dev: true /csso@5.0.5: @@ -4790,8 +4995,8 @@ packages: resolution: {integrity: sha512-pmf1rbAStw8UEQ0sr2cdJtWl48ZMuPD9Sto8HVQOq9vx9j2WgDEN6lYoaqFvqEHYOmGA9oRGn7LqWI9ta0YugQ==} dev: true - /electron-to-chromium@1.4.529: - resolution: {integrity: sha512-6uyPyXTo8lkv8SWAmjKFbG42U073TXlzD4R8rW3EzuznhFS2olCIAfjjQtV2dV2ar/vRF55KUd3zQYnCB0dd3A==} + /electron-to-chromium@1.4.537: + resolution: {integrity: sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==} dev: true /emoji-regex@8.0.0: @@ -4991,6 +5196,36 @@ packages: '@esbuild/win32-x64': 0.19.3 dev: true + /esbuild@0.19.4: + resolution: {integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.4 + '@esbuild/android-arm64': 0.19.4 + '@esbuild/android-x64': 0.19.4 + '@esbuild/darwin-arm64': 0.19.4 + '@esbuild/darwin-x64': 0.19.4 + '@esbuild/freebsd-arm64': 0.19.4 + '@esbuild/freebsd-x64': 0.19.4 + '@esbuild/linux-arm': 0.19.4 + '@esbuild/linux-arm64': 0.19.4 + '@esbuild/linux-ia32': 0.19.4 + '@esbuild/linux-loong64': 0.19.4 + '@esbuild/linux-mips64el': 0.19.4 + '@esbuild/linux-ppc64': 0.19.4 + '@esbuild/linux-riscv64': 0.19.4 + '@esbuild/linux-s390x': 0.19.4 + '@esbuild/linux-x64': 0.19.4 + '@esbuild/netbsd-x64': 0.19.4 + '@esbuild/openbsd-x64': 0.19.4 + '@esbuild/sunos-x64': 0.19.4 + '@esbuild/win32-arm64': 0.19.4 + '@esbuild/win32-ia32': 0.19.4 + '@esbuild/win32-x64': 0.19.4 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -5065,8 +5300,8 @@ packages: - supports-color dev: true - /eslint-plugin-antfu@1.0.0-beta.6(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-AbHAYYVv8BhjH4FkoSZWV+FxYwZUspqr0Zo5y4K0Jm8BhwXo6+UaQrpW3exxraJmsVTXty+Hlkcd4ysQV6DICw==} + /eslint-plugin-antfu@1.0.0-beta.9(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-lubf1lvnoft2YV+mNfcK0fj4MSlhcnY45IX30uBRMkWhtjnpv7fk1UC7VWLCGQizQIpRAxPtPf63ravXZVRX1w==} dependencies: '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) transitivePeerDependencies: @@ -5082,7 +5317,7 @@ packages: eslint: '>=8' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.8.2 + '@eslint-community/regexpp': 4.9.0 eslint: 8.50.0 dev: true @@ -5243,6 +5478,26 @@ packages: eslint-rule-composer: 0.3.0 dev: true + /eslint-plugin-vitest@0.3.1(@typescript-eslint/eslint-plugin@6.7.3)(eslint@8.50.0)(vitest@0.34.6): + resolution: {integrity: sha512-GeR3zISHmqUGWK2sfW+eyCZivMqiQYzPf9UttHXBiEyMveS/jkKLHCrHUllwr3Hz1+i0zoseANd2xL0cFha8Eg==} + engines: {node: 14.x || >= 16} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + eslint: 8.50.0 + typescript: 5.2.2 + vitest: 0.34.6 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-plugin-vue@9.17.0(eslint@8.50.0): resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} engines: {node: ^14.17.0 || >=16.0.0} @@ -5369,7 +5624,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.8.2 + '@eslint-community/regexpp': 4.9.0 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.50.0 '@humanwhocodes/config-array': 0.11.11 @@ -5559,7 +5814,7 @@ packages: enhanced-resolve: 5.15.0 mlly: 1.4.2 pathe: 1.1.1 - ufo: 1.3.0 + ufo: 1.3.1 dev: true /fast-deep-equal@3.1.3: @@ -5720,7 +5975,7 @@ packages: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 7.0.3 + minipass: 7.0.4 dev: true /fs.realpath@1.0.0: @@ -5851,15 +6106,15 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob@10.3.9: - resolution: {integrity: sha512-2tU/LKevAQvDVuVJ9pg9Yv9xcbSh+TqHuTaXTNbQwf+0kDl9Fm6bMovi4Nm5c8TVvfxo2LLcqCGtmO9KoJaGWg==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.3.5 + jackspeak: 2.3.6 minimatch: 9.0.3 - minipass: 7.0.3 + minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -5973,6 +6228,19 @@ packages: unenv: 1.7.4 dev: true + /h3@1.8.2: + resolution: {integrity: sha512-1Ca0orJJlCaiFY68BvzQtP2lKLk46kcLAxVM8JgYbtm2cUg6IY7pjpYgWMwUvDO9QI30N5JAukOKoT8KD3Q0PQ==} + dependencies: + cookie-es: 1.0.0 + defu: 6.1.2 + destr: 2.0.1 + iron-webcrypto: 0.10.1 + radix3: 1.1.0 + ufo: 1.3.1 + uncrypto: 0.1.3 + unenv: 1.7.4 + dev: true + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -6207,6 +6475,10 @@ packages: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true + /iron-webcrypto@0.10.1: + resolution: {integrity: sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA==} + dev: true + /iron-webcrypto@0.8.2: resolution: {integrity: sha512-jGiwmpgTuF19Vt4hn3+AzaVFGpVZt7A1ysd5ivFel2r4aNVFwqaYa6aU6qsF1PM7b+WFivZHz3nipwUOXaOnHg==} dev: true @@ -6403,8 +6675,8 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /jackspeak@2.3.5: - resolution: {integrity: sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw==} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -6416,7 +6688,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.7.0 + '@types/node': 20.8.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -6588,14 +6860,14 @@ packages: consola: 3.2.3 defu: 6.1.2 get-port-please: 3.1.1 - h3: 1.8.1 + h3: 1.8.2 http-shutdown: 1.2.2 jiti: 1.20.0 mlly: 1.4.2 node-forge: 1.3.1 pathe: 1.1.1 std-env: 3.4.3 - ufo: 1.3.0 + ufo: 1.3.1 untun: 0.1.2 uqr: 0.1.2 dev: true @@ -6708,7 +6980,7 @@ packages: resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==} engines: {node: '>=16.14.0'} dependencies: - magic-string: 0.30.3 + magic-string: 0.30.4 dev: true /magic-string@0.27.0: @@ -6730,6 +7002,13 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.4: + resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /magicast@0.3.0: resolution: {integrity: sha512-ZsEzw35h7xYoFlWHIyxU6zmH4sdwzdmY0DY4s/Lie/qKimeijz2jRw8/OV2248kt/y6FbvoTvGRKyB7y/Mpx8w==} dependencies: @@ -6783,7 +7062,7 @@ packages: cacache: 18.0.0 http-cache-semantics: 4.1.1 is-lambda: 1.0.1 - minipass: 7.0.3 + minipass: 7.0.4 minipass-fetch: 3.0.4 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -6797,7 +7076,7 @@ packages: /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 @@ -6945,7 +7224,7 @@ packages: resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 7.0.3 + minipass: 7.0.4 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -6992,8 +7271,8 @@ packages: engines: {node: '>=8'} dev: true - /minipass@7.0.3: - resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -7105,15 +7384,15 @@ packages: dependencies: '@cloudflare/kv-asset-handler': 0.3.0 '@netlify/functions': 2.1.0 - '@rollup/plugin-alias': 5.0.0(rollup@3.29.3) - '@rollup/plugin-commonjs': 25.0.4(rollup@3.29.3) - '@rollup/plugin-inject': 5.0.3(rollup@3.29.3) - '@rollup/plugin-json': 6.0.0(rollup@3.29.3) - '@rollup/plugin-node-resolve': 15.2.1(rollup@3.29.3) - '@rollup/plugin-replace': 5.0.2(rollup@3.29.3) - '@rollup/plugin-terser': 0.4.3(rollup@3.29.3) - '@rollup/plugin-wasm': 6.2.1(rollup@3.29.3) - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/plugin-alias': 5.0.0(rollup@3.29.4) + '@rollup/plugin-commonjs': 25.0.4(rollup@3.29.4) + '@rollup/plugin-inject': 5.0.3(rollup@3.29.4) + '@rollup/plugin-json': 6.0.0(rollup@3.29.4) + '@rollup/plugin-node-resolve': 15.2.1(rollup@3.29.4) + '@rollup/plugin-replace': 5.0.2(rollup@3.29.4) + '@rollup/plugin-terser': 0.4.3(rollup@3.29.4) + '@rollup/plugin-wasm': 6.2.1(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) '@types/http-proxy': 1.17.12 '@vercel/nft': 0.23.1 archiver: 6.0.1 @@ -7126,13 +7405,13 @@ packages: defu: 6.1.2 destr: 2.0.1 dot-prop: 8.0.2 - esbuild: 0.19.3 + esbuild: 0.19.4 escape-string-regexp: 5.0.0 etag: 1.8.1 fs-extra: 11.1.1 globby: 13.2.2 gzip-size: 7.0.0 - h3: 1.8.1 + h3: 1.8.2 hookable: 5.5.3 httpxy: 0.1.5 is-primitive: 3.0.1 @@ -7140,7 +7419,7 @@ packages: klona: 2.0.6 knitwork: 1.0.0 listhen: 1.5.5 - magic-string: 0.30.3 + magic-string: 0.30.4 mime: 3.0.0 mlly: 1.4.2 mri: 1.2.0 @@ -7153,18 +7432,18 @@ packages: pkg-types: 1.0.3 pretty-bytes: 6.1.1 radix3: 1.1.0 - rollup: 3.29.3 - rollup-plugin-visualizer: 5.9.2(rollup@3.29.3) + rollup: 3.29.4 + rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) scule: 1.0.0 semver: 7.5.4 serve-placeholder: 2.0.1 serve-static: 1.15.0 std-env: 3.4.3 - ufo: 1.3.0 + ufo: 1.3.1 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 - unimport: 3.4.0(rollup@3.29.3) + unimport: 3.4.0(rollup@3.29.4) unstorage: 1.9.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -7369,7 +7648,7 @@ packages: engines: {node: ^16.14.0 || >=18.0.0} dependencies: make-fetch-happen: 13.0.0 - minipass: 7.0.3 + minipass: 7.0.4 minipass-fetch: 3.0.4 minipass-json-stream: 1.0.1 minizlib: 2.1.2 @@ -7434,7 +7713,7 @@ packages: fsevents: 2.3.3 dev: true - /nuxt@3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2): + /nuxt@3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2): resolution: {integrity: sha512-fh3l3PhL79pHJckHVGebTFYlqXDq1jHAXUcNmS3RTfmJRb1s4qi5kSRgmYUWEI5I4Iu+S0u8wWh2ChvnZMQRog==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true @@ -7448,11 +7727,11 @@ packages: optional: true dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/kit': 3.7.3(rollup@3.29.3) - '@nuxt/schema': 3.7.3(rollup@3.29.3) - '@nuxt/telemetry': 2.4.1(rollup@3.29.3) + '@nuxt/kit': 3.7.3(rollup@3.29.4) + '@nuxt/schema': 3.7.3(rollup@3.29.4) + '@nuxt/telemetry': 2.4.1(rollup@3.29.4) '@nuxt/ui-templates': 1.3.1 - '@nuxt/vite-builder': 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2)(vue@3.3.4) + '@nuxt/vite-builder': 3.7.3(@types/node@18.16.19)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2)(vue@3.3.4) '@types/node': 18.16.19 '@unhead/dom': 1.7.4 '@unhead/ssr': 1.7.4 @@ -7494,9 +7773,9 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 - unimport: 3.3.0(rollup@3.29.3) + unimport: 3.3.0(rollup@3.29.4) unplugin: 1.5.0 - unplugin-vue-router: 0.6.4(rollup@3.29.3)(vue-router@4.2.4)(vue@3.3.4) + unplugin-vue-router: 0.6.4(rollup@3.29.4)(vue-router@4.2.4)(vue@3.3.4) untyped: 1.4.0 vue: 3.3.4 vue-bundle-renderer: 2.0.0 @@ -7534,7 +7813,7 @@ packages: - xml2js dev: true - /nuxt@3.7.4(@types/node@20.7.0)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2): + /nuxt@3.7.4(@types/node@20.8.0)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2): resolution: {integrity: sha512-voXN2kheEpi7DJd0hkikfLuA41UiP9IwDDol65dvoJiHnRseWfaw1MyJl6FLHHDHwRzisX9QXWIyMfa9YF4nGg==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true @@ -7548,12 +7827,12 @@ packages: optional: true dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/kit': 3.7.4(rollup@3.29.3) - '@nuxt/schema': 3.7.4(rollup@3.29.3) - '@nuxt/telemetry': 2.5.0(rollup@3.29.3) + '@nuxt/kit': 3.7.4(rollup@3.29.4) + '@nuxt/schema': 3.7.4(rollup@3.29.4) + '@nuxt/telemetry': 2.5.0(rollup@3.29.4) '@nuxt/ui-templates': 1.3.1 - '@nuxt/vite-builder': 3.7.4(@types/node@20.7.0)(eslint@8.50.0)(rollup@3.29.3)(typescript@5.2.2)(vue@3.3.4) - '@types/node': 20.7.0 + '@nuxt/vite-builder': 3.7.4(@types/node@20.8.0)(eslint@8.50.0)(rollup@3.29.4)(typescript@5.2.2)(vue@3.3.4) + '@types/node': 20.8.0 '@unhead/dom': 1.7.4 '@unhead/ssr': 1.7.4 '@unhead/vue': 1.7.4(vue@3.3.4) @@ -7565,17 +7844,17 @@ packages: defu: 6.1.2 destr: 2.0.1 devalue: 4.3.2 - esbuild: 0.19.3 + esbuild: 0.19.4 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fs-extra: 11.1.1 globby: 13.2.2 - h3: 1.8.1 + h3: 1.8.2 hookable: 5.5.3 jiti: 1.20.0 klona: 2.0.6 knitwork: 1.0.0 - magic-string: 0.30.3 + magic-string: 0.30.4 mlly: 1.4.2 nitropack: 2.6.3 nuxi: 3.9.0 @@ -7589,14 +7868,14 @@ packages: scule: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 - ufo: 1.3.0 + ufo: 1.3.1 ultrahtml: 1.5.2 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 - unimport: 3.4.0(rollup@3.29.3) + unimport: 3.4.0(rollup@3.29.4) unplugin: 1.5.0 - unplugin-vue-router: 0.7.0(rollup@3.29.3)(vue-router@4.2.5)(vue@3.3.4) + unplugin-vue-router: 0.7.0(rollup@3.29.4)(vue-router@4.2.5)(vue@3.3.4) untyped: 1.4.0 vue: 3.3.4 vue-bundle-renderer: 2.0.0 @@ -7790,7 +8069,7 @@ packages: '@npmcli/run-script': 7.0.1 cacache: 18.0.0 fs-minipass: 3.0.3 - minipass: 7.0.3 + minipass: 7.0.4 npm-package-arg: 11.0.1 npm-packlist: 8.0.0 npm-pick-manifest: 9.0.0 @@ -7894,7 +8173,7 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.0.1 - minipass: 7.0.3 + minipass: 7.0.4 dev: true /path-type@4.0.0: @@ -7952,75 +8231,75 @@ packages: engines: {node: '>=4'} dev: true - /postcss-calc@9.0.1(postcss@8.4.30): + /postcss-calc@9.0.1(postcss@8.4.31): resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: true - /postcss-colormin@6.0.0(postcss@8.4.30): + /postcss-colormin@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 + browserslist: 4.22.1 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-convert-values@6.0.0(postcss@8.4.30): + /postcss-convert-values@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 - postcss: 8.4.30 + browserslist: 4.22.1 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-discard-comments@6.0.0(postcss@8.4.30): + /postcss-discard-comments@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true - /postcss-discard-duplicates@6.0.0(postcss@8.4.30): + /postcss-discard-duplicates@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true - /postcss-discard-empty@6.0.0(postcss@8.4.30): + /postcss-discard-empty@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true - /postcss-discard-overridden@6.0.0(postcss@8.4.30): + /postcss-discard-overridden@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true /postcss-import-resolver@2.0.0: @@ -8029,19 +8308,19 @@ packages: enhanced-resolve: 4.5.0 dev: true - /postcss-import@15.1.0(postcss@8.4.30): + /postcss-import@15.1.0(postcss@8.4.31): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.6 dev: true - /postcss-load-config@4.0.1(postcss@8.4.30): + /postcss-load-config@4.0.1(postcss@8.4.31): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -8054,197 +8333,197 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.30 + postcss: 8.4.31 yaml: 2.3.2 dev: true - /postcss-merge-longhand@6.0.0(postcss@8.4.30): + /postcss-merge-longhand@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 - stylehacks: 6.0.0(postcss@8.4.30) + stylehacks: 6.0.0(postcss@8.4.31) dev: true - /postcss-merge-rules@6.0.1(postcss@8.4.30): + /postcss-merge-rules@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 + browserslist: 4.22.1 caniuse-api: 3.0.0 - cssnano-utils: 4.0.0(postcss@8.4.30) - postcss: 8.4.30 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true - /postcss-minify-font-values@6.0.0(postcss@8.4.30): + /postcss-minify-font-values@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-gradients@6.0.0(postcss@8.4.30): + /postcss-minify-gradients@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 4.0.0(postcss@8.4.30) - postcss: 8.4.30 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-params@6.0.0(postcss@8.4.30): + /postcss-minify-params@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 - cssnano-utils: 4.0.0(postcss@8.4.30) - postcss: 8.4.30 + browserslist: 4.22.1 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-selectors@6.0.0(postcss@8.4.30): + /postcss-minify-selectors@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true - /postcss-normalize-charset@6.0.0(postcss@8.4.30): + /postcss-normalize-charset@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 dev: true - /postcss-normalize-display-values@6.0.0(postcss@8.4.30): + /postcss-normalize-display-values@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-positions@6.0.0(postcss@8.4.30): + /postcss-normalize-positions@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-repeat-style@6.0.0(postcss@8.4.30): + /postcss-normalize-repeat-style@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-string@6.0.0(postcss@8.4.30): + /postcss-normalize-string@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-timing-functions@6.0.0(postcss@8.4.30): + /postcss-normalize-timing-functions@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-unicode@6.0.0(postcss@8.4.30): + /postcss-normalize-unicode@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 - postcss: 8.4.30 + browserslist: 4.22.1 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-url@6.0.0(postcss@8.4.30): + /postcss-normalize-url@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-whitespace@6.0.0(postcss@8.4.30): + /postcss-normalize-whitespace@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-ordered-values@6.0.0(postcss@8.4.30): + /postcss-ordered-values@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 4.0.0(postcss@8.4.30) - postcss: 8.4.30 + cssnano-utils: 4.0.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true - /postcss-reduce-initial@6.0.0(postcss@8.4.30): + /postcss-reduce-initial@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 + browserslist: 4.22.1 caniuse-api: 3.0.0 - postcss: 8.4.30 + postcss: 8.4.31 dev: true - /postcss-reduce-transforms@6.0.0(postcss@8.4.30): + /postcss-reduce-transforms@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true @@ -8256,28 +8535,28 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-svgo@6.0.0(postcss@8.4.30): + /postcss-svgo@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==} engines: {node: ^14 || ^16 || >= 18} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-value-parser: 4.2.0 svgo: 3.0.2 dev: true - /postcss-unique-selectors@6.0.0(postcss@8.4.30): + /postcss-unique-selectors@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.30 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true - /postcss-url@10.1.3(postcss@8.4.30): + /postcss-url@10.1.3(postcss@8.4.31): resolution: {integrity: sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==} engines: {node: '>=10'} peerDependencies: @@ -8286,7 +8565,7 @@ packages: make-dir: 3.1.0 mime: 2.5.2 minimatch: 3.0.8 - postcss: 8.4.30 + postcss: 8.4.31 xxhashjs: 0.2.2 dev: true @@ -8311,8 +8590,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss@8.4.30: - resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -8464,7 +8743,7 @@ packages: resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: - glob: 10.3.9 + glob: 10.3.10 json-parse-even-better-errors: 3.0.0 normalize-package-data: 6.0.0 npm-normalize-package-bin: 3.0.1 @@ -8598,15 +8877,15 @@ packages: glob: 7.2.3 dev: true - /rimraf@5.0.4: - resolution: {integrity: sha512-rizQI/o/YAMM1us0Zyax0uRfIK39XR52EAjjOi0fzMolpGp0onj6CWzBAXuOx6+6Xi9Rgi0d9tUZojhJerLUmQ==} + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.3.9 + glob: 10.3.10 dev: true - /rollup-plugin-visualizer@5.9.2(rollup@3.29.3): + /rollup-plugin-visualizer@5.9.2(rollup@3.29.4): resolution: {integrity: sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==} engines: {node: '>=14'} hasBin: true @@ -8618,13 +8897,13 @@ packages: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 3.29.3 + rollup: 3.29.4 source-map: 0.7.4 yargs: 17.7.2 dev: true - /rollup@3.29.3: - resolution: {integrity: sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -8962,7 +9241,7 @@ packages: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 7.0.3 + minipass: 7.0.4 dev: true /stackback@0.0.2: @@ -9071,14 +9350,14 @@ packages: acorn: 8.10.0 dev: true - /stylehacks@6.0.0(postcss@8.4.30): + /stylehacks@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.11 - postcss: 8.4.30 + browserslist: 4.22.1 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true @@ -9127,7 +9406,7 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check@3.5.2(@babel/core@7.23.0)(postcss@8.4.30)(svelte@4.2.0): + /svelte-check@3.5.2(@babel/core@7.23.0)(postcss@8.4.31)(svelte@4.2.0): resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==} hasBin: true peerDependencies: @@ -9140,7 +9419,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.0 - svelte-preprocess: 5.0.4(@babel/core@7.23.0)(postcss@8.4.30)(svelte@4.2.0)(typescript@5.2.2) + svelte-preprocess: 5.0.4(@babel/core@7.23.0)(postcss@8.4.31)(svelte@4.2.0)(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' @@ -9163,7 +9442,7 @@ packages: svelte: 4.2.0 dev: true - /svelte-preprocess@5.0.4(@babel/core@7.23.0)(postcss@8.4.30)(svelte@4.2.0)(typescript@5.2.2): + /svelte-preprocess@5.0.4(@babel/core@7.23.0)(postcss@8.4.31)(svelte@4.2.0)(typescript@5.2.2): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -9205,7 +9484,7 @@ packages: '@types/pug': 2.0.7 detect-indent: 6.1.0 magic-string: 0.27.0 - postcss: 8.4.30 + postcss: 8.4.31 sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.0 @@ -9246,7 +9525,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.3 + magic-string: 0.30.4 periscopic: 3.1.0 dev: true @@ -9456,7 +9735,7 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsup@7.2.0(postcss@8.4.30)(typescript@5.2.2): + /tsup@7.2.0(postcss@8.4.31)(typescript@5.2.2): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true @@ -9480,10 +9759,10 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss: 8.4.30 - postcss-load-config: 4.0.1(postcss@8.4.30) + postcss: 8.4.31 + postcss-load-config: 4.0.1(postcss@8.4.31) resolve-from: 5.0.0 - rollup: 3.29.3 + rollup: 3.29.4 source-map: 0.8.0-beta.0 sucrase: 3.34.0 tree-kill: 1.2.2 @@ -9578,6 +9857,10 @@ packages: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} dev: true + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + dev: true + /ultrahtml@1.5.2: resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} dev: true @@ -9625,10 +9908,10 @@ packages: hookable: 5.5.3 dev: true - /unimport@3.3.0(rollup@3.29.3): + /unimport@3.3.0(rollup@3.29.4): resolution: {integrity: sha512-3jhq3ZG5hFZzrWGDCpx83kjPzefP/EeuKkIO1T0MA4Zwj+dO/Og1mFvZ4aZ5WSDm0FVbbdVIRH1zKBG7c4wOpg==} dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) escape-string-regexp: 5.0.0 fast-glob: 3.3.1 local-pkg: 0.4.3 @@ -9643,14 +9926,14 @@ packages: - rollup dev: true - /unimport@3.4.0(rollup@3.29.3): + /unimport@3.4.0(rollup@3.29.4): resolution: {integrity: sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA==} dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) escape-string-regexp: 5.0.0 fast-glob: 3.3.1 local-pkg: 0.4.3 - magic-string: 0.30.3 + magic-string: 0.30.4 mlly: 1.4.2 pathe: 1.1.1 pkg-types: 1.0.3 @@ -9686,7 +9969,7 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unplugin-vue-router@0.6.4(rollup@3.29.3)(vue-router@4.2.4)(vue@3.3.4): + /unplugin-vue-router@0.6.4(rollup@3.29.4)(vue-router@4.2.4)(vue@3.3.4): resolution: {integrity: sha512-9THVhhtbVFxbsIibjK59oPwMI1UCxRWRPX7azSkTUABsxovlOXJys5SJx0kd/0oKIqNJuYgkRfAgPuO77SqCOg==} peerDependencies: vue-router: ^4.1.0 @@ -9695,8 +9978,8 @@ packages: optional: true dependencies: '@babel/types': 7.22.19 - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) - '@vue-macros/common': 1.8.0(rollup@3.29.3)(vue@3.3.4) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@vue-macros/common': 1.8.0(rollup@3.29.4)(vue@3.3.4) ast-walker-scope: 0.4.2 chokidar: 3.5.3 fast-glob: 3.3.1 @@ -9713,7 +9996,7 @@ packages: - vue dev: true - /unplugin-vue-router@0.7.0(rollup@3.29.3)(vue-router@4.2.5)(vue@3.3.4): + /unplugin-vue-router@0.7.0(rollup@3.29.4)(vue-router@4.2.5)(vue@3.3.4): resolution: {integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==} peerDependencies: vue-router: ^4.1.0 @@ -9722,9 +10005,9 @@ packages: optional: true dependencies: '@babel/types': 7.23.0 - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) - '@vue-macros/common': 1.8.0(rollup@3.29.3)(vue@3.3.4) - ast-walker-scope: 0.5.0(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@vue-macros/common': 1.8.0(rollup@3.29.4)(vue@3.3.4) + ast-walker-scope: 0.5.0(rollup@3.29.4) chokidar: 3.5.3 fast-glob: 3.3.1 json5: 2.2.3 @@ -9789,14 +10072,14 @@ packages: anymatch: 3.1.3 chokidar: 3.5.3 destr: 2.0.1 - h3: 1.8.1 + h3: 1.8.2 ioredis: 5.3.2 listhen: 1.5.5 lru-cache: 10.0.1 mri: 1.2.0 node-fetch-native: 1.4.0 ofetch: 1.3.3 - ufo: 1.3.0 + ufo: 1.3.1 transitivePeerDependencies: - supports-color dev: true @@ -9841,13 +10124,13 @@ packages: picocolors: 1.0.0 dev: true - /update-browserslist-db@1.0.13(browserslist@4.21.11): + /update-browserslist-db@1.0.13(browserslist@4.22.1): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.11 + browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -9915,7 +10198,7 @@ packages: - terser dev: true - /vite-node@0.33.0(@types/node@20.7.0): + /vite-node@0.33.0(@types/node@20.8.0): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -9925,7 +10208,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) transitivePeerDependencies: - '@types/node' - less @@ -9937,8 +10220,8 @@ packages: - terser dev: true - /vite-node@0.34.5(@types/node@20.7.0): - resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} + /vite-node@0.34.6(@types/node@20.8.0): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -9947,7 +10230,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) transitivePeerDependencies: - '@types/node' - less @@ -10005,33 +10288,33 @@ packages: strip-ansi: 6.0.1 tiny-invariant: 1.3.1 typescript: 5.2.2 - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.7 dev: true - /vite-plugin-inspect@0.7.28(rollup@3.29.3)(vite@4.3.9): + /vite-plugin-inspect@0.7.28(rollup@3.29.4)(vite@4.3.9): resolution: {integrity: sha512-XRdQGdf+PU6eT0EoL8beUyFQfcCrHr06OyRM71IT8t7rEC9JywdsscehGHEAyFZryfaVBWAI280N63BI2N+1BA==} engines: {node: '>=14'} peerDependencies: vite: ^3.1.0 || ^4.0.0 dependencies: '@antfu/utils': 0.7.4 - '@rollup/pluginutils': 5.0.2(rollup@3.29.3) + '@rollup/pluginutils': 5.0.2(rollup@3.29.4) debug: 4.3.4 fs-extra: 11.1.1 open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vite: 4.3.9(@types/node@20.7.0) + vite: 4.3.9(@types/node@20.8.0) transitivePeerDependencies: - rollup - supports-color dev: true - /vite-plugin-inspect@0.7.38(@nuxt/kit@3.7.4)(rollup@3.29.3)(vite@4.4.9): + /vite-plugin-inspect@0.7.38(@nuxt/kit@3.7.4)(rollup@3.29.4)(vite@4.4.9): resolution: {integrity: sha512-+p6pJVtBOLGv+RBrcKAFUdx+euizg0bjL35HhPyM0MjtKlqoC5V9xkCmO9Ctc8JrTyXqODbHqiLWJKumu5zJ7g==} engines: {node: '>=14'} peerDependencies: @@ -10042,8 +10325,8 @@ packages: optional: true dependencies: '@antfu/utils': 0.7.6 - '@nuxt/kit': 3.7.4(rollup@3.29.3) - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@nuxt/kit': 3.7.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) debug: 4.3.4 error-stack-parser-es: 0.1.1 fs-extra: 11.1.1 @@ -10070,14 +10353,14 @@ packages: '@vue/compiler-dom': 3.3.4 esno: 0.16.3 kolorist: 1.8.0 - magic-string: 0.30.3 + magic-string: 0.30.4 shell-quote: 1.8.1 vite: 4.4.9(@types/node@18.16.19) transitivePeerDependencies: - supports-color dev: true - /vite@4.3.9(@types/node@20.7.0): + /vite@4.3.9(@types/node@20.8.0): resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -10102,15 +10385,15 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.0 + '@types/node': 20.8.0 esbuild: 0.17.19 postcss: 8.4.24 - rollup: 3.29.3 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@4.4.0(@types/node@20.7.0): + /vite@4.4.0(@types/node@20.8.0): resolution: {integrity: sha512-Wf+DCEjuM8aGavEYiF77hnbxEZ+0+/jC9nABR46sh5Xi+GYeSvkeEFRiVuI3x+tPjxgZeS91h1jTAQTPFgePpA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -10138,10 +10421,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.0 + '@types/node': 20.8.0 esbuild: 0.18.11 postcss: 8.4.24 - rollup: 3.29.3 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true @@ -10177,12 +10460,12 @@ packages: '@types/node': 18.16.19 esbuild: 0.18.20 postcss: 8.4.29 - rollup: 3.29.3 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@4.4.9(@types/node@20.7.0): + /vite@4.4.9(@types/node@20.8.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -10210,10 +10493,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.0 + '@types/node': 20.8.0 esbuild: 0.18.20 postcss: 8.4.29 - rollup: 3.29.3 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true @@ -10226,11 +10509,11 @@ packages: vite: optional: true dependencies: - vite: 4.4.9(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) dev: true - /vitest@0.34.5: - resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} + /vitest@0.34.6: + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -10262,27 +10545,27 @@ packages: dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.7.0 - '@vitest/expect': 0.34.5 - '@vitest/runner': 0.34.5 - '@vitest/snapshot': 0.34.5 - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 + '@types/node': 20.8.0 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.8 + chai: 4.3.10 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.3 + magic-string: 0.30.4 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.7.0) - vite-node: 0.34.5(@types/node@20.7.0) + vite: 4.4.9(@types/node@20.8.0) + vite-node: 0.34.6(@types/node@20.8.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -10467,7 +10750,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.6 acorn: 8.10.0 acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.21.11 + browserslist: 4.22.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.3.1 @@ -10645,8 +10928,8 @@ packages: engines: {node: '>=12.20'} dev: true - /zhead@2.1.1: - resolution: {integrity: sha512-FRmjAFioi07R+bmL+fqbkXF/pCbC9PwcKQ8RDluC5xTaVbNBgYRQ4eKuS1C8c7Sil//UIxet/AGp7D6royoHhA==} + /zhead@2.1.2: + resolution: {integrity: sha512-h5X4OW0UseKFfLft2dyvAY5N/frg5JR+uLsy4ZNSUtX+EpFN/StRDn3gXePMLvIWTrAzmM6JRVchr4bL4UR+ng==} dev: true /zip-stream@5.0.1: diff --git a/src/index.ts b/src/index.ts index 6177478..b23f8c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,7 +10,7 @@ const DEFAULT_OPTIONS: PluginOptions = { global: false, cacheDir: './node_modules/unplugin-svg-transformer/cache', fallback: '', - log: true, + warning: true, } async function isTesting(): Promise { diff --git a/src/lib/Definition/DefinitionFile.ts b/src/lib/Definition/DefinitionFile.ts index 55d9a4c..31be222 100644 --- a/src/lib/Definition/DefinitionFile.ts +++ b/src/lib/Definition/DefinitionFile.ts @@ -15,7 +15,7 @@ export class DefinitionFile { const self = new DefinitionFile(options, types) await self.checkVue() - const optionsType = '{ fallback?: string, libraryDir?: string, useTypes?: boolean, global?: boolean, cacheDir?: string, isTesting?: boolean, isNuxt?: boolean, nuxtDir?: string }' + const optionsType = `{ cacheDir?: string, global: boolean, libraryDir?: string, svgDir?: string, useTypes: boolean, isTesting: boolean, isNuxt: boolean, nuxtDir: string, fallback: string, svg: { classDefault?: string[], clearSize: 'all' | 'parent' | 'none', clearClass: 'all' | 'parent' | 'none', clearStyle: 'all' | 'parent' | 'none', currentColor: boolean, inlineStyleDefault?: string[], sizeInherit: boolean, title?: boolean }, warning: boolean }` let contents = [ '/* eslint-disable */', diff --git a/src/lib/LibraryFile.ts b/src/lib/LibraryFile.ts index f68bab3..69c6dec 100644 --- a/src/lib/LibraryFile.ts +++ b/src/lib/LibraryFile.ts @@ -48,7 +48,8 @@ export class LibraryFile { ] } - const options = JSON.stringify(this.parseOptions()) + let options = JSON.stringify(this.parseOptions(), null, 2) + options = options.replace(/"([^(")"]+)":/g, '$1:') content = [ ...content, `export const options = ${options}`, @@ -74,14 +75,13 @@ export class LibraryFile { '}', '', this.options.useTypes ? 'export async function importSvg(name: SvgName): Promise {' : 'export async function importSvg(name) {', - ' if (!svgList[name] && options.log)', + ' if (!svgList[name] && options.warning)', // eslint-disable-next-line no-template-curly-in-string ' console.warn(`Icon ${name} not found`)', - ' name = svgList[name] || svgList["default"]', - ' const svg = await name()', - ' if (svg.default)', - ' return svg.default', - ' return svg', + ' const icon = svgList[name] || svgList["default"]', + ' const svg = await icon()', + '', + ' return svg.default', '}', ] @@ -104,15 +104,23 @@ export class LibraryFile { private parseOptions(): OptionsExtended { return { - cacheDir: this.parseOptionPath(this.options.cacheDir), fallback: this.options.fallback, - global: this.options.global || false, - isNuxt: this.options.isNuxt || false, - isTesting: this.options.isTesting || false, + svg: { + classDefault: this.options.svg?.classDefault ?? undefined, + clearSize: this.options.svg?.clearSize ?? 'none', + clearClass: this.options.svg?.clearClass ?? 'none', + clearStyle: this.options.svg?.clearStyle ?? 'none', + currentColor: this.options.svg?.currentColor ?? false, + inlineStyleDefault: this.options.svg?.inlineStyleDefault ?? undefined, + sizeInherit: this.options.svg?.sizeInherit ?? false, + title: this.options.svg?.title ?? undefined, + }, + warning: this.options.warning ?? false, + cacheDir: this.parseOptionPath(this.options.cacheDir), + global: this.options.global ?? false, libraryDir: this.parseOptionPath(this.options.libraryDir), - nuxtDir: this.parseOptionPath(this.options.nuxtDir), svgDir: this.parseOptionPath(this.options.svgDir), - useTypes: this.options.useTypes || false, + useTypes: this.options.useTypes ?? false, } } diff --git a/src/lib/Svg/SvgCollection.ts b/src/lib/Svg/SvgCollection.ts index d6c4afd..ff22e99 100644 --- a/src/lib/Svg/SvgCollection.ts +++ b/src/lib/Svg/SvgCollection.ts @@ -41,7 +41,7 @@ export class SvgCollection { svgFiles.push(...subFiles) } else if (path.extname(file) === '.svg') { - const item: SvgItem = await SvgItem.make(filePath, rootPath) + const item: SvgItem = await SvgItem.make(filePath, rootPath, this.options) svgFiles.push(item) } } @@ -53,7 +53,7 @@ export class SvgCollection { const itemsContent: string[] = [] await Promise.all(this.items.map(async (item) => { - let content = item.getContent() + let content = item.getContents() content = `export default '${content}'\n` itemsContent.push(content) @@ -63,19 +63,7 @@ export class SvgCollection { } private async addDefaultSvg(): Promise { - const content = this.options.fallback || '' - - const item = new SvgItem( - 'default.svg', - 'default', - 'default', - 'Default', - 'default.svg', - '/default.svg', - ) - await item.setContent(content) - - return item + return SvgItem.getDefaultSvg(this.options, '') } public async write(cacheDir: string): Promise { @@ -88,7 +76,7 @@ export class SvgCollection { const dir = dirname(path) await Path.ensureDirectoryExists(dir) - return await Path.write(path, `export default '${item.getContent()}'\n`) + return await Path.write(path, `export default '${item.getContents()}'\n`) }) await Promise.all(promises).then(() => true) diff --git a/src/lib/Svg/SvgItem.ts b/src/lib/Svg/SvgItem.ts index 91fee2c..cf37438 100644 --- a/src/lib/Svg/SvgItem.ts +++ b/src/lib/Svg/SvgItem.ts @@ -1,17 +1,19 @@ import fs from 'node:fs/promises' +import type { OptionsExtended } from '../../types' +import { SvgRender } from './SvgRender' export class SvgItem { public constructor( - protected basename?: string, - protected filename?: string, - protected name?: string, - protected title?: string, - protected fullPath?: string, - protected path?: string, - protected content?: string, + protected basename: string = '', + protected filename: string = '', + protected name: string = '', + protected title: string = '', + protected fullPath: string = '', + protected path: string = '', + protected contents: string = '', ) { } - public static async make(path: string, rootPath: string): Promise { + public static async make(path: string, rootPath: string, options: OptionsExtended): Promise { const self = new SvgItem() self.basename = path.replace(/^.*[\\\/]/, '') self.filename = self.basename.replace('.svg', '') @@ -19,7 +21,7 @@ export class SvgItem { self.path = path.replace(rootPath, '') self.name = self.nameFromPath() self.title = self.setTitle() - self.content = await self.svgContent() + self.contents = await self.svgRender(options) return self } @@ -83,12 +85,20 @@ export class SvgItem { * * @example `` */ - public getContent(): string { - return this.content ?? 'undefined' + public getContents(): string { + return this.contents ?? 'undefined' } - public async setContent(content: string): Promise { - this.content = await this.svgContent(content) + public static async getDefaultSvg(options: OptionsExtended, fallback: string): Promise { + return new SvgItem( + 'default.svg', + 'default', + 'default', + 'Default', + 'default.svg', + '/default.svg', + options.fallback ?? fallback, + ) } private nameFromPath(): string { @@ -104,43 +114,6 @@ export class SvgItem { return name } - private async svgContent(content?: string): Promise { - if (!content) - content = await fs.readFile(this.fullPath!, 'utf8') - - try { - content = this.addInlineCurrentColor(content) - content = this.removeBuiltInHeightAndWidth(content) - content = this.addDefaultStyle(content) - content = this.removeBreakLines(content) - content = this.removeClasses(content) - content = this.addTitleIfMissing(content) - content = this.removeTooLargeSpaces(content) - - return content - } - catch (err) { - console.error('Unable to read file:', err) - return undefined - } - } - - private addTitleIfMissing(content: string): string { - if (/.*?<\/title>/.test(content)) - return content - - const svgTagRegex = /<svg([^>]*)>/i - const match = svgTagRegex.exec(content) - if (!match) - return content - - const svgAttrs = match[1] - const titleElement = `<title>${this.title}` - const newContent = content.replace(svgTagRegex, `${titleElement}`) - - return newContent - } - private setTitle(): string { if (!this.filename) return '' @@ -156,49 +129,12 @@ export class SvgItem { if (!string) return '' - return string.replace(/\w\S*/g, (txt) => { - return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase() - }) - } - - private addInlineCurrentColor(content: string): string { - if (/fill="none"/.test(content)) { - if (/stroke="currentColor"/.test(content)) - return content - - return content.replace(/ txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase()) } - private removeTooLargeSpaces(content: string): string { - content = content.replace(/\s{2,}/g, ' ') - content = content.replace(/>\s<') - - return content - } + private async svgRender(options: OptionsExtended): Promise { + const render = await SvgRender.make(this, options) - private removeClasses(content: string): string { - return content.replace(/class=".*?"/g, '') + return render.getContents() } } diff --git a/src/lib/Svg/SvgRender.ts b/src/lib/Svg/SvgRender.ts new file mode 100644 index 0000000..b92bc56 --- /dev/null +++ b/src/lib/Svg/SvgRender.ts @@ -0,0 +1,190 @@ +import fs, { readFile } from 'node:fs/promises' +import type { OptionsExtended } from '../../types' +import type { SvgItem } from './SvgItem' + +export class SvgRender { + public constructor( + protected svgItem: SvgItem, + protected options: OptionsExtended, + protected contents: string = '', + + protected svgClass: string[] = [], + protected svgStyle: string[] = [], + + protected parentStart: string = '', + protected parentEnd: string = '', + protected children: string = '', + ) { } + + public static async make(item: SvgItem, options: OptionsExtended): Promise { + const self = new SvgRender(item, options) + await self.readFile() + if (options.svg?.title) + self.contents = self.addTitleIfMissing() + self.parse() + + if (options.svg?.classDefault) { + self.svgClass = [ + ...self.svgClass, + ...options.svg.classDefault, + ] + } + + if (options.svg?.inlineStyleDefault) { + self.svgStyle = [ + ...self.svgStyle, + ...options.svg.inlineStyleDefault, + ] + } + + if (options.svg?.clearSize === 'all') { + self.parentStart = self.removeWidthAndHeight(self.parentStart) + self.children = self.removeWidthAndHeight(self.children) + } + + if (options.svg?.clearSize === 'parent') + self.parentStart = self.removeWidthAndHeight(self.parentStart) + + if (options.svg?.clearClass === 'all') { + self.parentStart = self.removeClass(self.parentStart) + self.children = self.removeClass(self.children) + } + + if (options.svg?.clearClass === 'parent') + self.parentStart = self.removeClass(self.parentStart) + + if (options.svg?.clearStyle === 'all') { + self.parentStart = self.removeInlineStyle(self.parentStart) + self.children = self.removeInlineStyle(self.children) + } + + if (options.svg?.clearStyle === 'parent') + self.parentStart = self.removeInlineStyle(self.parentStart) + + self.contents = `${self.parentStart}${self.children}${self.parentEnd}` + + if (options.svg?.sizeInherit) + self.addWidthAndHeightInherit() + if (options.svg?.currentColor) + self.contents = self.addInlineCurrentColor() + + self.contents = self.addInlineStyle() + self.contents = self.addClassDefault() + self.contents = self.removeTooLargeSpaces() + + return self + } + + public getContents(): string { + return this.contents + } + + private async readFile(): Promise { + try { + this.contents = await readFile(this.svgItem.getFullPath()!, 'utf8') + } + catch (err) { + // console.error('Unable to read file:', err) + } + } + + private parse(): void { + this.contents = this.removeBreakLines() + this.contents = this.removeTooLargeSpaces() + + const matches = this.contents.match(/(<[^>]+>|[^<]+)/g) + let filter: string[] = [] + if (matches) + filter = matches.filter(n => n !== ' ') + else + filter = [this.contents] + + this.parentStart = filter.shift()?.trim() ?? '' + this.parentEnd = filter.pop()?.trim() ?? '' + this.children = filter.join('').trim() ?? '' + } + + private removeBreakLines(): string { + // const contents = this.contents.replace(/^ +/gm, '') + return this.contents.replace(/\r?\n|\r/g, '') + } + + private removeTooLargeSpaces(): string { + return this.contents.replace(/\s{2,}/g, ' ') + .replace(/>\s<') + .trim() + } + + private removeClass(contents: string): string { + return contents.replace(/class=".*?"/g, '') + } + + private removeInlineStyle(contents: string): string { + return contents.replace(/style=".*?"/g, '') + } + + private removeWidthAndHeight(contents: string): string { + return contents.replace(/width=".*?"/g, '') + .replace(/height=".*?"/g, '') + } + + private addWidthAndHeightInherit(): void { + this.svgStyle = [ + ...this.svgStyle, + 'height: inherit;', + 'width: inherit;', + ] + } + + private addInlineStyle(): string { + if (this.svgStyle.length === 0) + return this.contents + + const style = this.svgStyle.join(' ') + // if inline style exists + if (/style=".*?"/.test(this.contents)) + return this.contents.replace(/style=".*?"/, `style="${style}"`) + + // if no inline style + return this.contents.replace(/.*?<\/title>/.test(this.contents)) + return this.contents + + const svgTagRegex = /]*)>/i + const match = svgTagRegex.exec(this.contents) + if (!match) + return this.contents + + const svgAttrs = match[1] + const titleElement = `${this.svgItem.getTitle()}` + + return this.contents.replace(svgTagRegex, `${titleElement}`) + } + + private addInlineCurrentColor(): string { + if (/fill="none"/.test(this.contents)) { + if (/stroke="currentColor"/.test(this.contents)) + return this.contents + + return this.contents.replace(/', - log: true, + warning: true, } async function readTypes(opts: OptionsExtended): Promise { diff --git a/src/render/NuxtSvg.ts b/src/render/NuxtSvg.ts index 5c71587..03d0890 100644 --- a/src/render/NuxtSvg.ts +++ b/src/render/NuxtSvg.ts @@ -15,10 +15,15 @@ const NuxtSvg = defineComponent({ type: String as PropType, required: true, }, - display: { - type: String as PropType, + title: { + type: String as PropType, required: false, - default: 'inline-block', + default: undefined, + }, + reactive: { + type: Boolean as PropType, + required: false, + default: false, }, }, setup(props, { attrs }) { @@ -31,10 +36,10 @@ const NuxtSvg = defineComponent({ style: { ...(attrs as Record).style, }, - }) + }) as any - if (props.display !== false) - attributes.value.style.display = props.display + if (props.title) + attributes.value.title = props.title async function getSvg() { html.value = '' @@ -42,9 +47,11 @@ const NuxtSvg = defineComponent({ current.value = await importSvg(props.name) } - watch(() => props.name, async () => { - await getSvg() - }) + if (props.reactive) { + watch(() => props.name, async () => { + await getSvg() + }) + } onMounted(async () => { await getSvg() diff --git a/src/render/ReactSvg.tsx b/src/render/ReactSvg.tsx index 4316d6f..cf22891 100644 --- a/src/render/ReactSvg.tsx +++ b/src/render/ReactSvg.tsx @@ -6,14 +6,10 @@ interface Props { className?: string style?: React.CSSProperties name: SvgName - display?: Display + title: string } -function ReactSvg({ className, style, name, display }: Props): JSX.Element { - const svgStyle: React.CSSProperties = { - display: display || 'inline-block', - } - +function ReactSvg({ className, style, name, title }: Props): JSX.Element { const defaultSSR = defaultSvg(name) const [current, setCurrent] = useState(defaultSSR) @@ -33,7 +29,7 @@ function ReactSvg({ className, style, name, display }: Props): JSX.Element { getSvg() }, [name]) - return + return } export { diff --git a/src/render/VueSvg.ts b/src/render/VueSvg.ts index 3bda4cb..b9a9521 100644 --- a/src/render/VueSvg.ts +++ b/src/render/VueSvg.ts @@ -10,25 +10,29 @@ const VueSvg = defineComponent({ type: String as PropType, required: true, }, - display: { - type: String as PropType, + title: { + type: String as PropType, required: false, - default: 'inline-block', + default: undefined, + }, + reactive: { + type: Boolean as PropType, + required: false, + default: false, }, }, setup(props, { attrs }) { const defaultSSR = defaultSvg(props.name, true) const current = ref(defaultSSR) - const reactive = ref(false) const attributes = ref({ ...(attrs as Record), style: { ...(attrs as Record).style, }, - }) + }) as any - if (props.display !== false) - attributes.value.style.display = props.display + if (props.title) + attributes.value.title = props.title async function getSvg() { current.value = '' @@ -40,11 +44,10 @@ const VueSvg = defineComponent({ return } - reactive.value = wd.ust.options.reactive || false current.value = await wd.ust.importSvg(props.name) } - if (reactive.value) { + if (props.reactive) { watch(() => props.name, async () => { await getSvg() }) diff --git a/src/types.ts b/src/types.ts index b95a4bc..6e968de 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,3 @@ -import type { Display } from './render/shared' - export interface NuxtOptions extends Options { /** * Directory where your SVG files are located. @@ -20,48 +18,47 @@ export interface Options { */ fallback?: string /** - * Trigger a warning when the SVG is not found. - * - * @default true - */ - log?: boolean - /** - * **Only for Vue 3, React and Nuxt 3** if you ready-to-use components. + * SVG will be rendered as a string, so it's possible to add custom attributes. */ - component?: { + svg?: { /** - * CSS default `display` property for component. + * Add default classes to all SVG. * - * @default `inline-block` + * @default undefined */ - display?: Display + classDefault?: string[] /** - * Set `watch` hook for `name` prop for component. + * Clear `width` and `height` attributes from SVG (can be all, just parent on `` or none). * - * @default false + * @default `none` */ - reactive?: boolean + clearSize?: 'all' | 'parent' | 'none' /** - * Global options to toggle title attribute on icon based on SVG filename. If you set title on any SvgIcon component, it will override this option. + * Clear classes from SVG (can be all, just parent on `` or none). + * + * @default `none` */ - title?: boolean - } - /** - * SVG will be rendered as a string, so it's possible to add custom attributes. - */ - svg?: { + clearClass?: 'all' | 'parent' | 'none' /** - * Add default classes to all SVG. + * Clear inline styles from SVG (can be all, just parent on `` or none). * - * @default undefined + * @default `none` + */ + clearStyle?: 'all' | 'parent' | 'none' + /** + * Add `fill="currentColor"` or `stroke="currentColor"` to all SVG. + * + * Engine will try to detect if the SVG is a stroke or a fill. + * + * @default false */ - classDefault?: string + currentColor?: boolean /** * Add default inline style to all SVG. * * @default undefined */ - styleDefault?: string + inlineStyleDefault?: string[] /** * Global options to toggle size inheritance, inline style `height: inherit; width: inherit;`. * @@ -69,46 +66,35 @@ export interface Options { */ sizeInherit?: boolean /** - * Clear classes from SVG (can be all, just parent on `` or none). - * - * @default `none` - */ - clearClass?: 'all' | 'parent' | 'none' - /** - * Clear `width` and `height` attributes from SVG (can be all, just parent on `` or none). + * Add title to SVG string. * - * @default `none` - */ - clearSize?: 'all' | 'parent' | 'none' - /** - * Clear inline styles from SVG (can be all, just parent on `` or none). + * @example + * ```html + * svg-name + * ``` * - * @default `none` + * @default false */ - clearStyle?: 'all' | 'parent' | 'none' + title?: boolean } -} - -export interface PluginOptions extends Options { /** - * Directory where your SVG files are located. + * Trigger a warning when the SVG is not found. * - * @default './src/svg' + * @default true */ - svgDir?: string + warning?: boolean +} + +export interface PluginOptions extends Options { /** - * Directory where `icons.ts` will be created. + * SVG files will be added to cache directory. * - * @default './src' - */ - libraryDir?: string - /** - * Use types, if you want to use JavaScript instead of TypeScript, set this option to false. - * You can't have autocompletion with JavaScript. + * By default, cache is into `node_modules/unplugin-svg-components/cache`. + * But in some cases, you may want to change this directory. * - * @default true + * @default './node_modules/unplugin-svg-components/cache' */ - useTypes?: boolean + cacheDir?: string /** * For Vite users, this option is already enabled by `vite-env.d.ts` file. * @@ -129,14 +115,24 @@ export interface PluginOptions extends Options { */ global?: boolean /** - * SVG files will be added to cache directory. + * Directory where `icons.ts` will be created. * - * By default, cache is into `node_modules/unplugin-svg-components/cache`. - * But in some cases, you may want to change this directory. + * @default './src' + */ + libraryDir?: string + /** + * Directory where your SVG files are located. * - * @default './node_modules/unplugin-svg-components/cache' + * @default './src/svg' */ - cacheDir?: string + svgDir?: string + /** + * Use types, if you want to use JavaScript instead of TypeScript, set this option to false. + * You can't have autocompletion with JavaScript. + * + * @default true + */ + useTypes?: boolean } export interface OptionsExtended extends PluginOptions { diff --git a/test/plugin.test.ts b/test/plugin.test.ts index 7873ec0..5a7f9bd 100644 --- a/test/plugin.test.ts +++ b/test/plugin.test.ts @@ -17,7 +17,7 @@ it('can parse and transform svg files', async () => { expect(twitter?.getTitle()).toBe('Twitter') expect(twitter?.getPath()).toBe(Path.normalizePaths('/social/twitter.svg')) expect(twitter?.getFullPath().includes(Path.normalizePaths('/test/icons/social/twitter.svg'))).toBe(true) - expect(twitter?.getContent()).toBe('Twitter') + expect(twitter?.getContents()).toBe('Twitter') }) it('can write svg as ts files', async () => {