From 7ef638484f0e609d6e540b5f6d376ca7c6ebe2fc Mon Sep 17 00:00:00 2001 From: KeJunMao Date: Sat, 20 Jan 2024 14:53:08 +0800 Subject: [PATCH 01/19] chore: update deps --- examples/vite-vue-ts/package.json | 10 +- examples/vue-cli/package.json | 2 +- package.json | 37 +- playground/package.json | 4 +- pnpm-lock.yaml | 2691 +++++++++++++++-------------- 5 files changed, 1435 insertions(+), 1309 deletions(-) diff --git a/examples/vite-vue-ts/package.json b/examples/vite-vue-ts/package.json index 3a00e42..f738f74 100644 --- a/examples/vite-vue-ts/package.json +++ b/examples/vite-vue-ts/package.json @@ -9,13 +9,13 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.3.4" + "vue": "^3.4.15" }, "devDependencies": { - "@vitejs/plugin-vue": "^4.3.4", - "typescript": "^5.2.2", + "@vitejs/plugin-vue": "^5.0.3", + "typescript": "^5.3.3", "unplugin-preprocessor-directives": "workspace:*", - "vite": "^4.4.9", - "vue-tsc": "^1.8.15" + "vite": "^5.0.12", + "vue-tsc": "^1.8.27" } } diff --git a/examples/vue-cli/package.json b/examples/vue-cli/package.json index a2cd1ce..5b73877 100644 --- a/examples/vue-cli/package.json +++ b/examples/vue-cli/package.json @@ -7,7 +7,7 @@ "build": "vue-cli-service build" }, "dependencies": { - "vue": "^3.3.4" + "vue": "^3.4.15" }, "devDependencies": { "@vue/cli-service": "~5.0.8", diff --git a/package.json b/package.json index 90f6531..8a03ef2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "unplugin-preprocessor-directives", "type": "module", "version": "0.0.8", - "packageManager": "pnpm@8.8.0", + "packageManager": "pnpm@8.14.1", "description": "", "license": "MIT", "homepage": "https://github.com/kejunmao/unplugin-preprocessor-directives#readme", @@ -170,27 +170,26 @@ } }, "dependencies": { - "magic-string": "^0.30.3", - "unplugin": "^1.5.0", - "xregexp": "^5.1.1" + "magic-string": "^0.30.5", + "unplugin": "^1.6.0" }, "devDependencies": { - "@antfu/eslint-config": "^0.42.1", - "@nuxt/kit": "^3.7.4", - "@nuxt/schema": "^3.7.4", - "@types/node": "^20.7.1", - "bumpp": "^9.2.0", + "@antfu/eslint-config": "^2.6.3", + "@nuxt/kit": "^3.9.3", + "@nuxt/schema": "^3.9.3", + "@types/node": "^20.11.5", + "bumpp": "^9.3.0", "chalk": "^5.3.0", - "eslint": "^8.50.0", - "esno": "^0.17.0", - "fast-glob": "^3.3.1", - "nodemon": "^3.0.1", + "eslint": "^8.56.0", + "esno": "^4.0.0", + "fast-glob": "^3.3.2", + "nodemon": "^3.0.3", "rimraf": "^5.0.5", - "rollup": "^3.29.4", - "tsup": "^7.2.0", - "typescript": "^5.2.2", - "vite": "^4.4.9", - "vitest": "^0.34.5", - "webpack": "^5.88.2" + "rollup": "^4.9.5", + "tsup": "^8.0.1", + "typescript": "^5.3.3", + "vite": "^5.0.12", + "vitest": "^1.2.1", + "webpack": "^5.89.0" } } diff --git a/playground/package.json b/playground/package.json index 27781b1..dd2be8f 100644 --- a/playground/package.json +++ b/playground/package.json @@ -4,7 +4,7 @@ "dev": "nodemon -w '../src/**/*.ts' -e .ts -x vite dev" }, "devDependencies": { - "vite": "^4.4.9", - "vite-plugin-inspect": "^0.7.38" + "vite": "^5.0.12", + "vite-plugin-inspect": "^0.8.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75d70b0..51996a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,100 +13,97 @@ importers: version: 0.3.4 esbuild: specifier: '*' - version: 0.18.20 + version: 0.19.11 magic-string: - specifier: ^0.30.3 - version: 0.30.3 + specifier: ^0.30.5 + version: 0.30.5 unplugin: - specifier: ^1.5.0 - version: 1.5.0 - xregexp: - specifier: ^5.1.1 - version: 5.1.1 + specifier: ^1.6.0 + version: 1.6.0 devDependencies: '@antfu/eslint-config': - specifier: ^0.42.1 - version: 0.42.1(eslint@8.50.0)(typescript@5.2.2) + specifier: ^2.6.3 + version: 2.6.3(@vue/compiler-sfc@3.4.15)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.1) '@nuxt/kit': - specifier: ^3.7.4 - version: 3.7.4(rollup@3.29.4) + specifier: ^3.9.3 + version: 3.9.3(rollup@4.9.5) '@nuxt/schema': - specifier: ^3.7.4 - version: 3.7.4(rollup@3.29.4) + specifier: ^3.9.3 + version: 3.9.3(rollup@4.9.5) '@types/node': - specifier: ^20.7.1 - version: 20.7.1 + specifier: ^20.11.5 + version: 20.11.5 bumpp: - specifier: ^9.2.0 - version: 9.2.0 + specifier: ^9.3.0 + version: 9.3.0 chalk: specifier: ^5.3.0 version: 5.3.0 eslint: - specifier: ^8.50.0 - version: 8.50.0 + specifier: ^8.56.0 + version: 8.56.0 esno: - specifier: ^0.17.0 - version: 0.17.0 + specifier: ^4.0.0 + version: 4.0.0 fast-glob: - specifier: ^3.3.1 - version: 3.3.1 + specifier: ^3.3.2 + version: 3.3.2 nodemon: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.0.3 + version: 3.0.3 rimraf: specifier: ^5.0.5 version: 5.0.5 rollup: - specifier: ^3.29.4 - version: 3.29.4 + specifier: ^4.9.5 + version: 4.9.5 tsup: - specifier: ^7.2.0 - version: 7.2.0(typescript@5.2.2) + specifier: ^8.0.1 + version: 8.0.1(typescript@5.3.3) typescript: - specifier: ^5.2.2 - version: 5.2.2 + specifier: ^5.3.3 + version: 5.3.3 vite: - specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@20.11.5) vitest: - specifier: ^0.34.5 - version: 0.34.5 + specifier: ^1.2.1 + version: 1.2.1(@types/node@20.11.5) webpack: - specifier: ^5.88.2 - version: 5.88.2(esbuild@0.18.20) + specifier: ^5.89.0 + version: 5.89.0(esbuild@0.19.11) examples/vite-vue-ts: dependencies: vue: - specifier: ^3.3.4 - version: 3.3.4 + specifier: ^3.4.15 + version: 3.4.15(typescript@5.3.3) devDependencies: '@vitejs/plugin-vue': - specifier: ^4.3.4 - version: 4.3.4(vite@4.4.9)(vue@3.3.4) + specifier: ^5.0.3 + version: 5.0.3(vite@5.0.12)(vue@3.4.15) typescript: - specifier: ^5.2.2 - version: 5.2.2 + specifier: ^5.3.3 + version: 5.3.3 unplugin-preprocessor-directives: specifier: workspace:* version: link:../.. vite: - specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@20.11.5) vue-tsc: - specifier: ^1.8.15 - version: 1.8.15(typescript@5.2.2) + specifier: ^1.8.27 + version: 1.8.27(typescript@5.3.3) examples/vue-cli: dependencies: vue: - specifier: ^3.3.4 - version: 3.3.4 + specifier: ^3.4.15 + version: 3.4.15(typescript@5.3.3) devDependencies: '@vue/cli-service': specifier: ~5.0.8 - version: 5.0.8(esbuild@0.18.20)(vue@3.3.4) + version: 5.0.8(@vue/compiler-sfc@3.4.15)(esbuild@0.19.11)(vue@3.4.15) unplugin-preprocessor-directives: specifier: workspace:* version: link:../.. @@ -114,11 +111,11 @@ importers: playground: devDependencies: vite: - specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@20.11.5) vite-plugin-inspect: - specifier: ^0.7.38 - version: 0.7.38(@nuxt/kit@3.7.4)(rollup@3.29.4)(vite@4.4.9) + specifier: ^0.8.1 + version: 0.8.1(@nuxt/kit@3.9.3)(rollup@4.9.5)(vite@5.0.12) packages: @@ -144,101 +141,91 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@antfu/eslint-config-basic@0.42.1(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-VYcWpDXAYytrYNH4LjNy42t0d/fq1dFOsnIs6DyqDKdvMAlXN7ScksFAgm/NBaTnBcaBrySCIG+cLQPk5wLTIg==} + /@antfu/eslint-config@2.6.3(@vue/compiler-sfc@3.4.15)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.1): + resolution: {integrity: sha512-sfkamrOatMwMZkp14mBerHKIw8FY0SD1iCb5UZ6Y5hgb+FeDpNQPlVA0i2PN95TQ8NSYyPC1QnoM+UA5NSl0Kg==} + hasBin: true peerDependencies: - eslint: '>=7.4.0' - dependencies: - eslint: 8.50.0 - eslint-plugin-antfu: 0.42.1(eslint@8.50.0)(typescript@5.2.2) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.50.0) - eslint-plugin-html: 7.1.0 - eslint-plugin-import: /eslint-plugin-i@2.28.1(@typescript-eslint/parser@6.7.0)(eslint@8.50.0) - eslint-plugin-jsdoc: 46.8.1(eslint@8.50.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.50.0) - eslint-plugin-markdown: 3.0.1(eslint@8.50.0) - eslint-plugin-n: 16.1.0(eslint@8.50.0) + '@unocss/eslint-plugin': '>=0.50.0' + eslint: '>=8.40.0' + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react: ^7.33.2 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-refresh: ^0.4.4 + eslint-plugin-svelte: ^2.34.1 + svelte-eslint-parser: ^0.33.1 + peerDependenciesMeta: + '@unocss/eslint-plugin': + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-svelte: + optional: true + svelte-eslint-parser: + optional: true + dependencies: + '@antfu/eslint-define-config': 1.23.0-2 + '@antfu/install-pkg': 0.3.1 + '@eslint-types/jsdoc': 46.8.2-1 + '@eslint-types/typescript-eslint': 6.18.1 + '@eslint-types/unicorn': 50.0.1 + '@stylistic/eslint-plugin': 1.5.4(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-flat-gitignore: 0.1.2 + eslint-merge-processors: 0.1.0(eslint@8.56.0) + eslint-plugin-antfu: 2.1.1(eslint@8.56.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) + eslint-plugin-i: 2.29.1(@typescript-eslint/parser@6.19.0)(eslint@8.56.0) + eslint-plugin-jsdoc: 48.0.2(eslint@8.56.0) + eslint-plugin-jsonc: 2.12.2(eslint@8.56.0) + eslint-plugin-markdown: 3.0.1(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.50.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.50.0) - eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.50.0) - eslint-plugin-yml: 1.9.0(eslint@8.50.0) - jsonc-eslint-parser: 2.3.0 + eslint-plugin-perfectionist: 2.5.0(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.4.0) + eslint-plugin-toml: 0.9.2(eslint@8.56.0) + eslint-plugin-unicorn: 50.0.1(eslint@8.56.0) + eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0) + eslint-plugin-vitest: 0.3.20(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.1) + eslint-plugin-vue: 9.20.1(eslint@8.56.0) + eslint-plugin-yml: 1.12.2(eslint@8.56.0) + eslint-processor-vue-blocks: 0.1.1(@vue/compiler-sfc@3.4.15)(eslint@8.56.0) + globals: 13.24.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 0.5.0 + parse-gitignore: 2.0.0 + picocolors: 1.0.0 + prompts: 2.4.2 + toml-eslint-parser: 0.9.3 + vue-eslint-parser: 9.4.0(eslint@8.56.0) yaml-eslint-parser: 1.2.2 + yargs: 17.7.2 transitivePeerDependencies: - - '@typescript-eslint/eslint-plugin' - - '@typescript-eslint/parser' + - '@vue/compiler-sfc' + - astro-eslint-parser - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + - svelte - typescript + - vitest dev: true - /@antfu/eslint-config-ts@0.42.1(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-gCz6sapcwZIsXu8LB9THR0r4hHKnNY7HZe4op0AwlK/lA5dO4sSLk68M9ig3CdaRkIW8LTC/sAKyQhX7md6++w==} - peerDependencies: - eslint: '>=7.4.0' - typescript: '>=3.9' - dependencies: - '@antfu/eslint-config-basic': 0.42.1(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - jest - - supports-color + /@antfu/eslint-define-config@1.23.0-2: + resolution: {integrity: sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} dev: true - /@antfu/eslint-config-vue@0.42.1(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-9F+AyDHw9exEcg1RNhDoTyHgsanBkKE2kZ8Atadn2O8EMbrFE383tETxO+VTv1Dr71z9qaVA2SVQjesPzctQVg==} - peerDependencies: - eslint: '>=7.4.0' + /@antfu/install-pkg@0.3.1: + resolution: {integrity: sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==} dependencies: - '@antfu/eslint-config-basic': 0.42.1(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - '@antfu/eslint-config-ts': 0.42.1(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - eslint-plugin-vue: 9.17.0(eslint@8.50.0) - local-pkg: 0.4.3 - transitivePeerDependencies: - - '@typescript-eslint/eslint-plugin' - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - jest - - supports-color - - typescript - dev: true - - /@antfu/eslint-config@0.42.1(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-/U5PRCTPUI5khNMl4jBw1tLii7biJcrgD3yJEnxCQiTOjkfuVJeESSZieI5Qlu0zVXuudpq8R5VApCKjH4TpsA==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - '@antfu/eslint-config-vue': 0.42.1(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - eslint-plugin-eslint-comments: 3.2.0(eslint@8.50.0) - eslint-plugin-html: 7.1.0 - eslint-plugin-import: /eslint-plugin-i@2.28.1(@typescript-eslint/parser@6.7.0)(eslint@8.50.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.50.0) - eslint-plugin-n: 16.1.0(eslint@8.50.0) - eslint-plugin-promise: 6.1.1(eslint@8.50.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.50.0) - eslint-plugin-vue: 9.17.0(eslint@8.50.0) - eslint-plugin-yml: 1.9.0(eslint@8.50.0) - jsonc-eslint-parser: 2.3.0 - yaml-eslint-parser: 1.2.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - jest - - supports-color - - typescript + execa: 8.0.1 dev: true /@antfu/utils@0.7.6: @@ -273,7 +260,7 @@ packages: '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -361,6 +348,11 @@ packages: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} @@ -396,14 +388,14 @@ packages: hasBin: true dependencies: '@babel/types': 7.22.10 + dev: true - /@babel/runtime-corejs3@7.22.15: - resolution: {integrity: sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==} - engines: {node: '>=6.9.0'} + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true dependencies: - core-js-pure: 3.32.1 - regenerator-runtime: 0.14.0 - dev: false + '@babel/types': 7.22.10 /@babel/standalone@7.22.10: resolution: {integrity: sha512-VmK2sWxUTfDDh9mPfCtFJPIehZToteqK+Zpwq8oJUjJ+WeeKIFTTQIrDzH7jEdom+cAaaguU7FI/FBsBWFkIeQ==} @@ -431,7 +423,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.10 '@babel/types': 7.22.10 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -450,417 +442,206 @@ packages: engines: {node: '>=10.0.0'} dev: true - /@es-joy/jsdoccomment@0.40.1: - resolution: {integrity: sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==} + /@es-joy/jsdoccomment@0.41.0: + resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} dependencies: - comment-parser: 1.4.0 + comment-parser: 1.4.1 esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 dev: true - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.7.0 - dev: true - - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - dependencies: - esbuild: 0.17.19 - source-map-support: 0.5.21 - dev: true - - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.7.0 - dev: true - - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/aix-ppc64@0.19.11: + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} - cpu: [arm64] - os: [android] + cpu: [ppc64] + os: [aix] requiresBuild: true - dev: true optional: true - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + /@esbuild/android-arm64@0.19.11: + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + /@esbuild/android-arm@0.19.11: + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.19.11: + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + /@esbuild/darwin-arm64@0.19.11: + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + /@esbuild/darwin-x64@0.19.11: + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.19.11: + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true - - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + /@esbuild/freebsd-x64@0.19.11: + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.19.11: + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + /@esbuild/linux-arm@0.19.11: + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + /@esbuild/linux-ia32@0.19.11: + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.19.11: + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.19.11: + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + /@esbuild/linux-ppc64@0.19.11: + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.19.11: + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.19.11: + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + /@esbuild/linux-x64@0.19.11: + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.19.11: + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - optional: true - - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + /@esbuild/openbsd-x64@0.19.11: + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + /@esbuild/sunos-x64@0.19.11: + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.19.11: + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + /@esbuild/win32-ia32@0.19.11: + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.19.11: + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.50.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -869,15 +650,27 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint-types/jsdoc@46.8.2-1: + resolution: {integrity: sha512-FwD7V0xX0jyaqj8Ul5ZY+TAAPohDfVqtbuXJNHb+OIv1aTIqZi5+Zn3F2UwQ5O3BnQd2mTduyK0+HjGx3/AMFg==} + dev: true + + /@eslint-types/typescript-eslint@6.18.1: + resolution: {integrity: sha512-sROyc1rWhtvSdszkR3VAv2fioXIyKNFFRbIgoiije2FA+iNn4FEDhP2+kvbq8wPda2adcrNhSZyWSEFsef+lbg==} + dev: true + + /@eslint-types/unicorn@50.0.1: + resolution: {integrity: sha512-nuJuipTNcg9f+oxZ+3QZw4tuDLmir4RJOPfM/oujgToiy1s+tePDZhwg5jUGc3q8OzTtPbVpsFSYX7QApjO3EA==} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) espree: 9.6.1 globals: 13.20.0 - ignore: 5.2.4 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -886,8 +679,8 @@ packages: - supports-color dev: true - /@eslint/js@8.50.0: - resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -901,12 +694,12 @@ packages: '@hapi/hoek': 9.3.0 dev: true - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -917,8 +710,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true /@isaacs/cliui@8.0.2: @@ -933,8 +726,8 @@ packages: wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 @@ -1022,47 +815,47 @@ packages: fastq: 1.13.0 dev: true - /@nuxt/kit@3.7.4(rollup@3.29.4): - resolution: {integrity: sha512-/S5abZL62BITCvC/TY3KWA6N721U1Osln3cQdBb56XHIeafZCBVqTi92Xb0o7ovl72mMRhrKwRu7elzvz9oT/g==} + /@nuxt/kit@3.9.3(rollup@4.9.5): + resolution: {integrity: sha512-bHGXpTB6E+YJCC1L9tTwrP7txgLZzyuFes/tgy1ZM4dlfrCsGqLK/K4mddROMdC3D81scnH84u7yQsN0JRgoTg==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - '@nuxt/schema': 3.7.4(rollup@3.29.4) - c12: 1.4.2 + '@nuxt/schema': 3.9.3(rollup@4.9.5) + c12: 1.6.1 consola: 3.2.3 - defu: 6.1.2 - globby: 13.2.2 + defu: 6.1.4 + globby: 14.0.0 hash-sum: 2.0.0 - ignore: 5.2.4 - jiti: 1.20.0 + ignore: 5.3.0 + jiti: 1.21.0 knitwork: 1.0.0 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.2.0 semver: 7.5.4 - ufo: 1.3.0 + ufo: 1.3.2 unctx: 2.3.1 - unimport: 3.3.0(rollup@3.29.4) + unimport: 3.7.1(rollup@4.9.5) untyped: 1.4.0 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/schema@3.7.4(rollup@3.29.4): - resolution: {integrity: sha512-q6js+97vDha4Fa2x2kDVEuokJr+CGIh1TY2wZp2PLZ7NhG3XEeib7x9Hq8XE8B6pD0GKBRy3eRPPOY69gekBCw==} + /@nuxt/schema@3.9.3(rollup@4.9.5): + resolution: {integrity: sha512-pchkGBYdEJ9TAOoC5DKnLuAaFPjzgn2k0OUTr31QwbtHdTR3Q2Ua/oKsS1g9CPU7KRzSE5Vkf7ECE8zVydqF5A==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: '@nuxt/ui-templates': 1.3.1 consola: 3.2.3 - defu: 6.1.2 + defu: 6.1.4 hookable: 5.5.3 - pathe: 1.1.1 + pathe: 1.1.2 pkg-types: 1.0.3 - postcss-import-resolver: 2.0.0 - std-env: 3.4.3 - ufo: 1.3.0 - unimport: 3.3.0(rollup@3.29.4) + scule: 1.2.0 + std-env: 3.7.0 + ufo: 1.3.2 + unimport: 3.7.1(rollup@4.9.5) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -1084,35 +877,129 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/pluginutils@5.0.2(rollup@3.29.4): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + /@rollup/pluginutils@5.1.0(rollup@4.9.5): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.4 + rollup: 4.9.5 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.4): - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.29.4 + /@rollup/rollup-android-arm-eabi@4.9.5: + resolution: {integrity: sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.9.5: + resolution: {integrity: sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.5: + resolution: {integrity: sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.5: + resolution: {integrity: sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.5: + resolution: {integrity: sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.5: + resolution: {integrity: sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.5: + resolution: {integrity: sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.5: + resolution: {integrity: sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.5: + resolution: {integrity: sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.5: + resolution: {integrity: sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.5: + resolution: {integrity: sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.5: + resolution: {integrity: sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.5: + resolution: {integrity: sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true /@rspack/binding-darwin-arm64@0.3.4: resolution: {integrity: sha512-/B9Xp9mfz+tiq2caM37PvrWDyzvQ4aGBPCbKbnRq13kfOrwJmT9nUAy1y+D8bDl1gLYT+7eVHczGZwMooPa2AA==} @@ -1243,6 +1130,11 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + /@soda/friendly-errors-webpack-plugin@1.8.1(webpack@5.88.2): resolution: {integrity: sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==} engines: {node: '>=8.0.0'} @@ -1253,13 +1145,79 @@ packages: error-stack-parser: 2.1.4 string-width: 4.2.3 strip-ansi: 6.0.1 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /@soda/get-current-script@1.0.2: resolution: {integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==} dev: true + /@stylistic/eslint-plugin-js@1.5.4(eslint@8.56.0): + resolution: {integrity: sha512-3ctWb3NvJNV1MsrZN91cYp2EGInLPSoZKphXIbIRx/zjZxKwLDr9z4LMOWtqjq14li/OgqUUcMq5pj8fgbLoTw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + acorn: 8.11.3 + escape-string-regexp: 4.0.0 + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + dev: true + + /@stylistic/eslint-plugin-jsx@1.5.4(eslint@8.56.0): + resolution: {integrity: sha512-JUfrpCkeBCqt1IZ4QsP4WgxGza4PhK4LPbc0VnCjHKygl+rgqoDAovqOuzFJ49wJ4Ix3r6OIHFuwiBGswZEVvg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.5.4(eslint@8.56.0) + eslint: 8.56.0 + estraverse: 5.3.0 + dev: true + + /@stylistic/eslint-plugin-plus@1.5.4(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-dI0Cs5vYX/0uMhQDY+NK0cKQ0Pe9B6jWYxd0Ndud+mNloDaVLrsmJocK4zn+YfhGEDs1E4Nk5uAPZEumIpDuSg==} + peerDependencies: + eslint: '*' + dependencies: + '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin-ts@1.5.4(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-NZDFVIlVNjuPvhT+0Cidm5IS3emtx338xbJTqs2xfOVRDGTpYwRHhNVEGa1rFOpYHmv0sAj6+OXbMDn7ul0K/g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.5.4(eslint@8.56.0) + '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin@1.5.4(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-zWPXr+O67GC9KDAFkbL1U9UVqE6Iv69YMKhkIECCmE0GvClUJwdfsimm4XebEDondV7kfjMrTDZaYfrI5aS0Jg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 1.5.4(eslint@8.56.0) + '@stylistic/eslint-plugin-jsx': 1.5.4(eslint@8.56.0) + '@stylistic/eslint-plugin-plus': 1.5.4(eslint@8.56.0)(typescript@5.3.3) + '@stylistic/eslint-plugin-ts': 1.5.4(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: @@ -1275,60 +1233,54 @@ packages: resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==} dependencies: '@types/connect': 3.4.37 - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/bonjour@3.5.12: resolution: {integrity: sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg==} dependencies: - '@types/node': 20.7.1 - dev: true - - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.5 - dev: true - - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + '@types/node': 20.11.5 dev: true /@types/connect-history-api-fallback@1.5.2: resolution: {integrity: sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q==} dependencies: '@types/express-serve-static-core': 4.17.38 - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/connect@3.4.37: resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==} dependencies: - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/eslint-scope@3.7.3: resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==} dependencies: '@types/eslint': 8.4.1 - '@types/estree': 1.0.0 + '@types/estree': 1.0.5 dev: true /@types/eslint@8.4.1: resolution: {integrity: sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==} dependencies: - '@types/estree': 1.0.0 - '@types/json-schema': 7.0.11 + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.12 dev: true /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + /@types/express-serve-static-core@4.17.38: resolution: {integrity: sha512-hXOtc0tuDHZPFwwhuBJXPbjemWtXnJjbvuuyNH2Y5Z6in+iXc63c4eXYDc7GGGqHy+iwYqAJMdaItqdnbcBKmg==} dependencies: - '@types/node': 20.7.1 + '@types/node': 20.11.5 '@types/qs': 6.9.9 '@types/range-parser': 1.2.6 '@types/send': 0.17.3 @@ -1354,7 +1306,7 @@ packages: /@types/http-proxy@1.17.13: resolution: {integrity: sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw==} dependencies: - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/json-schema@7.0.11: @@ -1382,8 +1334,10 @@ packages: resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true - /@types/node@20.7.1: - resolution: {integrity: sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==} + /@types/node@20.11.5: + resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} + dependencies: + undici-types: 5.26.5 dev: true /@types/normalize-package-data@2.4.1: @@ -1414,7 +1368,7 @@ packages: resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==} dependencies: '@types/mime': 1.3.4 - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/serve-index@1.9.3: @@ -1428,13 +1382,13 @@ packages: dependencies: '@types/http-errors': 2.0.3 '@types/mime': 3.0.3 - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/sockjs@0.3.35: resolution: {integrity: sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw==} dependencies: - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true /@types/unist@2.0.6: @@ -1448,11 +1402,11 @@ packages: /@types/ws@8.5.8: resolution: {integrity: sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==} dependencies: - '@types/node': 20.7.1 + '@types/node': 20.11.5 dev: true - /@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==} + /@typescript-eslint/eslint-plugin@6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1463,25 +1417,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/type-utils': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.0 - debug: 4.3.4 - eslint: 8.50.0 + '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.19.0 + '@typescript-eslint/type-utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.19.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.1(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.7.0(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==} + /@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1490,35 +1444,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.0 - debug: 4.3.4 - eslint: 8.50.0 - typescript: 5.2.2 + '@typescript-eslint/scope-manager': 6.19.0 + '@typescript-eslint/types': 6.19.0 + '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.19.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.8: - resolution: {integrity: sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.8 - '@typescript-eslint/visitor-keys': 5.59.8 - dev: true - - /@typescript-eslint/scope-manager@6.7.0: - resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==} + /@typescript-eslint/scope-manager@6.19.0: + resolution: {integrity: sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/types': 6.19.0 + '@typescript-eslint/visitor-keys': 6.19.0 dev: true - /@typescript-eslint/type-utils@6.7.0(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==} + /@typescript-eslint/type-utils@6.19.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1527,49 +1473,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.50.0 - ts-api-utils: 1.0.1(typescript@5.2.2) - typescript: 5.2.2 + '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + ts-api-utils: 1.0.1(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.8: - resolution: {integrity: sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@6.7.0: - resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==} + /@typescript-eslint/types@6.19.0: + resolution: {integrity: sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.8(typescript@5.2.2): - resolution: {integrity: sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.8 - '@typescript-eslint/visitor-keys': 5.59.8 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.7.0(typescript@5.2.2): - resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==} + /@typescript-eslint/typescript-estree@6.19.0(typescript@5.3.3): + resolution: {integrity: sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1577,138 +1497,117 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 - debug: 4.3.4 + '@typescript-eslint/types': 6.19.0 + '@typescript-eslint/visitor-keys': 6.19.0 + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 + minimatch: 9.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@5.59.8(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.8 - '@typescript-eslint/types': 5.59.8 - '@typescript-eslint/typescript-estree': 5.59.8(typescript@5.2.2) - eslint: 8.50.0 - eslint-scope: 5.1.1 - semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/utils@6.7.0(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==} + /@typescript-eslint/utils@6.19.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - eslint: 8.50.0 + '@typescript-eslint/scope-manager': 6.19.0 + '@typescript-eslint/types': 6.19.0 + '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) + eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.8: - resolution: {integrity: sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@6.19.0: + resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/types': 6.19.0 eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.7.0: - resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.7.0 - eslint-visitor-keys: 3.4.3 + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitejs/plugin-vue@4.3.4(vite@4.4.9)(vue@3.3.4): - resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==} - engines: {node: ^14.18.0 || >=16.0.0} + /@vitejs/plugin-vue@5.0.3(vite@5.0.12)(vue@3.4.15): + resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.7.1) - vue: 3.3.4 + vite: 5.0.12(@types/node@20.11.5) + vue: 3.4.15(typescript@5.3.3) dev: true - /@vitest/expect@0.34.5: - resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} + /@vitest/expect@1.2.1: + resolution: {integrity: sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==} dependencies: - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 - chai: 4.3.7 + '@vitest/spy': 1.2.1 + '@vitest/utils': 1.2.1 + chai: 4.4.1 dev: true - /@vitest/runner@0.34.5: - resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + /@vitest/runner@1.2.1: + resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==} dependencies: - '@vitest/utils': 0.34.5 - p-limit: 4.0.0 + '@vitest/utils': 1.2.1 + p-limit: 5.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.5: - resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + /@vitest/snapshot@1.2.1: + resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==} dependencies: - magic-string: 0.30.3 + magic-string: 0.30.5 pathe: 1.1.1 - pretty-format: 29.6.2 + pretty-format: 29.7.0 dev: true - /@vitest/spy@0.34.5: - resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} + /@vitest/spy@1.2.1: + resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 dev: true - /@vitest/utils@0.34.5: - resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} + /@vitest/utils@1.2.1: + resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==} dependencies: - diff-sequences: 29.4.3 - loupe: 2.3.6 - pretty-format: 29.6.2 + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 dev: true - /@volar/language-core@1.10.1: - resolution: {integrity: sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==} + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: - '@volar/source-map': 1.10.1 + '@volar/source-map': 1.11.1 dev: true - /@volar/source-map@1.10.1: - resolution: {integrity: sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==} + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript@1.10.1: - resolution: {integrity: sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==} + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: - '@volar/language-core': 1.10.1 + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 dev: true /@vue/cli-overlay@5.0.8: @@ -1720,7 +1619,7 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.8(esbuild@0.18.20)(vue@3.3.4) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.15)(esbuild@0.19.11)(vue@3.4.15) '@vue/cli-shared-utils': 5.0.8 transitivePeerDependencies: - encoding @@ -1731,10 +1630,10 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.8(esbuild@0.18.20)(vue@3.3.4) + '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.15)(esbuild@0.19.11)(vue@3.4.15) dev: true - /@vue/cli-service@5.0.8(esbuild@0.18.20)(vue@3.3.4): + /@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.15)(esbuild@0.19.11)(vue@3.4.15): resolution: {integrity: sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==} engines: {node: ^12.0.0 || >= 14.0.0} hasBin: true @@ -1774,7 +1673,7 @@ packages: '@vue/cli-plugin-vuex': 5.0.8(@vue/cli-service@5.0.8) '@vue/cli-shared-utils': 5.0.8 '@vue/component-compiler-utils': 3.3.0 - '@vue/vue-loader-v15': /vue-loader@15.11.1(css-loader@6.8.1)(webpack@5.88.2) + '@vue/vue-loader-v15': /vue-loader@15.11.1(@vue/compiler-sfc@3.4.15)(css-loader@6.8.1)(webpack@5.88.2) '@vue/web-component-wrapper': 1.3.0 acorn: 8.10.0 acorn-walk: 8.2.0 @@ -1787,9 +1686,9 @@ packages: cliui: 7.0.4 copy-webpack-plugin: 9.1.0(webpack@5.88.2) css-loader: 6.8.1(webpack@5.88.2) - css-minimizer-webpack-plugin: 3.4.1(esbuild@0.18.20)(webpack@5.88.2) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.19.11)(webpack@5.88.2) cssnano: 5.1.15(postcss@8.4.27) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) default-gateway: 6.0.3 dotenv: 10.0.0 dotenv-expand: 5.1.0 @@ -1809,11 +1708,11 @@ packages: postcss-loader: 6.2.1(postcss@8.4.27)(webpack@5.88.2) progress-webpack-plugin: 1.0.16(webpack@5.88.2) ssri: 8.0.1 - terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.19.11)(webpack@5.88.2) thread-loader: 3.0.4(webpack@5.88.2) - vue-loader: 17.3.0(vue@3.3.4)(webpack@5.88.2) + vue-loader: 17.3.0(@vue/compiler-sfc@3.4.15)(vue@3.4.15)(webpack@5.88.2) vue-style-loader: 4.1.3 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) webpack-bundle-analyzer: 4.9.1 webpack-chain: 6.5.1 webpack-dev-server: 4.15.1(debug@4.3.4)(webpack@5.88.2) @@ -1916,32 +1815,48 @@ packages: '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 + dev: true + + /@vue/compiler-core@3.4.15: + resolution: {integrity: sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==} + dependencies: + '@babel/parser': 7.23.6 + '@vue/shared': 3.4.15 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.0.2 /@vue/compiler-dom@3.3.4: resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} dependencies: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 + dev: true - /@vue/compiler-sfc@3.3.4: - resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + /@vue/compiler-dom@3.4.15: + resolution: {integrity: sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==} dependencies: - '@babel/parser': 7.22.10 - '@vue/compiler-core': 3.3.4 - '@vue/compiler-dom': 3.3.4 - '@vue/compiler-ssr': 3.3.4 - '@vue/reactivity-transform': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/compiler-core': 3.4.15 + '@vue/shared': 3.4.15 + + /@vue/compiler-sfc@3.4.15: + resolution: {integrity: sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==} + dependencies: + '@babel/parser': 7.23.6 + '@vue/compiler-core': 3.4.15 + '@vue/compiler-dom': 3.4.15 + '@vue/compiler-ssr': 3.4.15 + '@vue/shared': 3.4.15 estree-walker: 2.0.2 - magic-string: 0.30.3 - postcss: 8.4.27 + magic-string: 0.30.5 + postcss: 8.4.33 source-map-js: 1.0.2 - /@vue/compiler-ssr@3.3.4: - resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + /@vue/compiler-ssr@3.4.15: + resolution: {integrity: sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==} dependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/compiler-dom': 3.4.15 + '@vue/shared': 3.4.15 /@vue/component-compiler-utils@3.3.0: resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} @@ -2012,73 +1927,60 @@ packages: - whiskers dev: true - /@vue/language-core@1.8.15(typescript@5.2.2): - resolution: {integrity: sha512-zche5Aw8kkvp3YaghuLiOZyVIpoWHjSQ0EfjxGSsqHOPMamdCoa9x3HtbenpR38UMUoKJ88wiWuiOrV3B/Yq+A==} + /@vue/language-core@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@volar/language-core': 1.10.1 - '@volar/source-map': 1.10.1 + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 '@vue/compiler-dom': 3.3.4 - '@vue/reactivity': 3.3.4 '@vue/shared': 3.3.4 - minimatch: 9.0.1 + computeds: 0.0.1 + minimatch: 9.0.3 muggle-string: 0.3.1 - typescript: 5.2.2 + path-browserify: 1.0.1 + typescript: 5.3.3 vue-template-compiler: 2.7.14 dev: true - /@vue/reactivity-transform@3.3.4: - resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} - dependencies: - '@babel/parser': 7.22.10 - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 - estree-walker: 2.0.2 - magic-string: 0.30.3 - - /@vue/reactivity@3.3.4: - resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + /@vue/reactivity@3.4.15: + resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==} dependencies: - '@vue/shared': 3.3.4 + '@vue/shared': 3.4.15 - /@vue/runtime-core@3.3.4: - resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + /@vue/runtime-core@3.4.15: + resolution: {integrity: sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==} dependencies: - '@vue/reactivity': 3.3.4 - '@vue/shared': 3.3.4 + '@vue/reactivity': 3.4.15 + '@vue/shared': 3.4.15 - /@vue/runtime-dom@3.3.4: - resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + /@vue/runtime-dom@3.4.15: + resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==} dependencies: - '@vue/runtime-core': 3.3.4 - '@vue/shared': 3.3.4 - csstype: 3.1.2 + '@vue/runtime-core': 3.4.15 + '@vue/shared': 3.4.15 + csstype: 3.1.3 - /@vue/server-renderer@3.3.4(vue@3.3.4): - resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + /@vue/server-renderer@3.4.15(vue@3.4.15): + resolution: {integrity: sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==} peerDependencies: - vue: 3.3.4 + vue: 3.4.15 dependencies: - '@vue/compiler-ssr': 3.3.4 - '@vue/shared': 3.3.4 - vue: 3.3.4 + '@vue/compiler-ssr': 3.4.15 + '@vue/shared': 3.4.15 + vue: 3.4.15(typescript@5.3.3) /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} - - /@vue/typescript@1.8.15(typescript@5.2.2): - resolution: {integrity: sha512-qWyanQKXOsK84S8rP7QBrqsvUdQ0nZABZmTjXMpb3ox4Bp5IbkscREA3OPUrkgl64mAxwwCzIWcOc3BPTCPjQw==} - dependencies: - '@volar/typescript': 1.10.1 - '@vue/language-core': 1.8.15(typescript@5.2.2) - transitivePeerDependencies: - - typescript dev: true + /@vue/shared@3.4.15: + resolution: {integrity: sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==} + /@vue/web-component-wrapper@1.3.0: resolution: {integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==} dev: true @@ -2209,20 +2111,28 @@ packages: negotiator: 0.6.3 dev: true - /acorn-import-assertions@1.9.0(acorn@8.8.2): + /acorn-import-assertions@1.9.0(acorn@8.10.0): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.3): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.8.2 + acorn: 8.11.3 dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.11.3 dev: true /acorn-walk@8.2.0: @@ -2230,31 +2140,27 @@ packages: engines: {node: '>=0.4.0'} dev: true + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true + dev: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} dev: true - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2546,6 +2452,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001579 + electron-to-chromium: 1.4.640 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -2568,19 +2485,18 @@ packages: semver: 7.5.4 dev: true - /bumpp@9.2.0: - resolution: {integrity: sha512-pgp7y3jp33QTaXFVDrE0IKuZF5Y8EsIz+ywZXFALW2nD+ZD+4crxJe/GypBQBoJuZrr5dc6TGrR3wl7fk3+C6w==} + /bumpp@9.3.0: + resolution: {integrity: sha512-P46VikoEZadYCqx7mbClKlaJnOyvc+JfRJPRf1YwlOjwqeYmutgFe1w9hvfXe819VhpU0N0TNXtxyVAUlAgaNA==} engines: {node: '>=10'} hasBin: true dependencies: '@jsdevtools/ez-spawn': 3.0.4 - c12: 1.4.2 + c12: 1.6.1 cac: 6.7.14 - fast-glob: 3.3.1 + fast-glob: 3.3.2 + js-yaml: 4.1.0 prompts: 2.4.2 semver: 7.5.4 - transitivePeerDependencies: - - supports-color dev: true /bundle-name@3.0.0: @@ -2590,13 +2506,13 @@ packages: run-applescript: 5.0.0 dev: true - /bundle-require@4.0.1(esbuild@0.18.20): + /bundle-require@4.0.1(esbuild@0.19.11): resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.18.20 + esbuild: 0.19.11 load-tsconfig: 0.2.3 dev: true @@ -2610,22 +2526,20 @@ packages: engines: {node: '>= 0.8'} dev: true - /c12@1.4.2: - resolution: {integrity: sha512-3IP/MuamSVRVw8W8+CHWAz9gKN4gd+voF2zm/Ln6D25C2RhytEZ1ABbC8MjKr4BR9rhoV1JQ7jJA158LDiTkLg==} + /c12@1.6.1: + resolution: {integrity: sha512-fAZOi3INDvIbmjuwAVVggusyRTxwNdTAnwLay8IsXwhFzDwPPGzFxzrx6L55CPFGPulUSZI0eyFUvRDXveoE3g==} dependencies: chokidar: 3.5.3 - defu: 6.1.2 + defu: 6.1.4 dotenv: 16.3.1 - giget: 1.1.2 - jiti: 1.20.0 - mlly: 1.4.2 - ohash: 1.1.2 - pathe: 1.1.1 + giget: 1.2.1 + jiti: 1.21.0 + mlly: 1.5.0 + ohash: 1.1.3 + pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.0.3 rc9: 2.1.1 - transitivePeerDependencies: - - supports-color dev: true /cac@6.7.14: @@ -2671,19 +2585,23 @@ packages: /caniuse-lite@1.0.30001551: resolution: {integrity: sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==} + /caniuse-lite@1.0.30001579: + resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + dev: true + /case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} dev: true - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} 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.0 + get-func-name: 2.0.2 loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 @@ -2731,8 +2649,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: @@ -2747,7 +2667,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} @@ -2759,11 +2679,17 @@ packages: engines: {node: '>=6.0'} dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} dev: true + /citty@0.1.5: + resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} + dependencies: + consola: 3.2.3 + dev: true + /clean-css@5.3.2: resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} @@ -2827,6 +2753,15 @@ packages: wrap-ansi: 7.0.0 dev: true + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -2889,8 +2824,8 @@ packages: engines: {node: '>= 12'} dev: true - /comment-parser@1.4.0: - resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} dev: true @@ -2920,6 +2855,10 @@ packages: - supports-color dev: true + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -3134,19 +3073,20 @@ packages: peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob-parent: 6.0.2 globby: 11.1.0 normalize-path: 3.0.0 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true - /core-js-pure@3.32.1: - resolution: {integrity: sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==} - requiresBuild: true - dev: false + /core-js-compat@3.35.0: + resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} + dependencies: + browserslist: 4.22.2 + dev: true /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3206,10 +3146,10 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.27) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true - /css-minimizer-webpack-plugin@3.4.1(esbuild@0.18.20)(webpack@5.88.2): + /css-minimizer-webpack-plugin@3.4.1(esbuild@0.19.11)(webpack@5.88.2): resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -3229,13 +3169,13 @@ packages: optional: true dependencies: cssnano: 5.1.15(postcss@8.4.27) - esbuild: 0.18.20 + esbuild: 0.19.11 jest-worker: 27.5.1 postcss: 8.4.27 schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /css-select@4.3.0: @@ -3333,8 +3273,8 @@ packages: css-tree: 1.1.3 dev: true - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -3351,7 +3291,7 @@ packages: ms: 2.0.0 dev: true - /debug@3.2.7(supports-color@5.5.0): + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -3360,10 +3300,9 @@ packages: optional: true dependencies: ms: 2.1.3 - supports-color: 5.5.0 dev: true - /debug@4.3.4: + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -3373,6 +3312,7 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 5.5.0 dev: true /deep-eql@4.1.3: @@ -3432,8 +3372,8 @@ packages: engines: {node: '>=12'} dev: true - /defu@6.1.2: - resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dev: true /depd@1.1.2: @@ -3459,8 +3399,8 @@ packages: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -3482,13 +3422,6 @@ packages: '@leichtgewicht/ip-codec': 2.0.4 dev: true - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -3510,14 +3443,6 @@ packages: entities: 2.2.0 dev: true - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.4.0 - dev: true - /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true @@ -3529,13 +3454,6 @@ packages: domelementtype: 2.3.0 dev: true - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -3544,14 +3462,6 @@ packages: domhandler: 4.3.1 dev: true - /domutils@3.0.1: - resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -3597,6 +3507,10 @@ packages: /electron-to-chromium@1.4.498: resolution: {integrity: sha512-4LODxAzKGVy7CJyhhN5mebwe7U2L29P+0G+HUriHnabm0d7LSff8Yn7t+Wq+2/9ze2Fu1dhX7mww090xfv7qXQ==} + /electron-to-chromium@1.4.640: + resolution: {integrity: sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==} + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -3621,15 +3535,6 @@ packages: once: 1.4.0 dev: true - /enhanced-resolve@4.5.0: - resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} - engines: {node: '>=6.9.0'} - dependencies: - graceful-fs: 4.2.10 - memory-fs: 0.5.0 - tapable: 1.1.3 - dev: true - /enhanced-resolve@5.12.0: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} @@ -3650,17 +3555,9 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true - /entities@4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - dev: true - - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3682,64 +3579,35 @@ packages: resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==} dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - dev: true - - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -3764,17 +3632,50 @@ packages: engines: {node: '>=12'} dev: true - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-compat-utils@0.1.2(eslint@8.56.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-compat-utils@0.4.1(eslint@8.56.0): + resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.56.0 + semver: 7.5.4 + dev: true + + /eslint-config-flat-gitignore@0.1.2: + resolution: {integrity: sha512-PcBsqtd5QHEZH4ROvpnRN4EP0qcHh9voCCHgtyHxnJZHGspJREcZn7oPqRG/GfWt9m3C0fkC2l5CuBtMig2wXQ==} + dependencies: + parse-gitignore: 2.0.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7 is-core-module: 2.13.0 resolve: 1.22.4 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.7)(eslint@8.50.0): + /eslint-merge-processors@0.1.0(eslint@8.56.0): + resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} + peerDependencies: + eslint: '*' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3795,67 +3696,59 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - debug: 3.2.7(supports-color@5.5.0) - eslint: 8.50.0 - eslint-import-resolver-node: 0.3.7 + '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + debug: 3.2.7 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-antfu@0.42.1(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-uW4Z/j3RSzwloR0Ym4f1rY/ZLrodSC7kd6XTLQccYdhNBgNswTzqPyfPtIeFV0XnlLp/B6AeXfOWcK4c5ZyFkg==} + /eslint-plugin-antfu@2.1.1(eslint@8.56.0): + resolution: {integrity: sha512-HCPo3IP15/gOaruIb1ce6R4LUv/MKBZCmWzqYiLGDFW43WW4juPURnjaQIE3AgWNSoCURqD3wxerXYKzokKTgA==} + peerDependencies: + eslint: '*' dependencies: - '@typescript-eslint/utils': 6.7.0(eslint@8.50.0)(typescript@5.2.2) - transitivePeerDependencies: - - eslint - - supports-color - - typescript + eslint: 8.56.0 dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.50.0): - resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} + /eslint-plugin-es-x@7.5.0(eslint@8.56.0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.6.2 - eslint: 8.50.0 + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.50.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.56.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.50.0 - ignore: 5.2.4 - dev: true - - /eslint-plugin-html@7.1.0: - resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} - dependencies: - htmlparser2: 8.0.1 + eslint: 8.56.0 + ignore: 5.3.0 dev: true - /eslint-plugin-i@2.28.1(@typescript-eslint/parser@6.7.0)(eslint@8.50.0): - resolution: {integrity: sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg==} + /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.19.0)(eslint@8.56.0): + resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} engines: {node: '>=12'} peerDependencies: eslint: ^7.2.0 || ^8 dependencies: - debug: 3.2.7(supports-color@5.5.0) - doctrine: 2.1.0 - eslint: 8.50.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.7)(eslint@8.50.0) - get-tsconfig: 4.7.0 + debug: 4.3.4(supports-color@5.5.0) + doctrine: 3.0.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + get-tsconfig: 4.7.2 is-glob: 4.0.3 minimatch: 3.1.2 - resolve: 1.22.4 semver: 7.5.4 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -3864,83 +3757,67 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.59.8(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /eslint-plugin-jsdoc@46.8.1(eslint@8.50.0): - resolution: {integrity: sha512-uTce7IBluPKXIQMWJkIwFsI1gv7sZRmLjctca2K5DIxPi8fSBj9f4iru42XmGwuiMyH2f3nfc60sFmnSGv4Z/A==} - engines: {node: '>=16'} + /eslint-plugin-jsdoc@48.0.2(eslint@8.56.0): + resolution: {integrity: sha512-CBFl5Jc7+jlV36RwDm+PQ8Uw5r28pn2/uW/OaB+Gw5bFwn4Py/1eYMZ3hGf9S4meUFZ/sRvS+hVif2mRAp6WqQ==} + engines: {node: '>=18'} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 dependencies: - '@es-joy/jsdoccomment': 0.40.1 + '@es-joy/jsdoccomment': 0.41.0 are-docs-informative: 0.0.2 - comment-parser: 1.4.0 - debug: 4.3.4 + comment-parser: 1.4.1 + debug: 4.3.4(supports-color@5.5.0) escape-string-regexp: 4.0.0 - eslint: 8.50.0 + eslint: 8.56.0 esquery: 1.5.0 is-builtin-module: 3.2.1 semver: 7.5.4 - spdx-expression-parse: 3.0.1 + spdx-expression-parse: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.50.0): - resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} + /eslint-plugin-jsonc@2.12.2(eslint@8.56.0): + resolution: {integrity: sha512-iv2BLi1bqkSxCPEvDOY6xiBXzAFi5iS2gTOU8fnXGfKxkC6MvC5Tw2XAgbP6R6WRlqV7AtFItx4Xb7mCONtmmw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - eslint: 8.50.0 - jsonc-eslint-parser: 2.3.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + eslint: 8.56.0 + eslint-compat-utils: 0.4.1(eslint@8.56.0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.50.0): + /eslint-plugin-markdown@3.0.1(eslint@8.56.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.50.0 + eslint: 8.56.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.1.0(eslint@8.50.0): - resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==} + /eslint-plugin-n@16.6.2(eslint@8.56.0): + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) builtins: 5.0.1 - eslint: 8.50.0 - eslint-plugin-es-x: 7.2.0(eslint@8.50.0) + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) get-tsconfig: 4.7.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.0 + is-builtin-module: 3.2.1 is-core-module: 2.13.0 minimatch: 3.1.2 resolve: 1.22.4 @@ -3952,80 +3829,140 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-promise@6.1.1(eslint@8.50.0): - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + /eslint-plugin-perfectionist@2.5.0(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.4.0): + resolution: {integrity: sha512-F6XXcq4mKKUe/SREoMGQqzgw6cgCgf3pFzkFfQVIGtqD1yXVpQjnhTepzhBeZfxZwgMzR9HO4yH4CUhIQ2WBcQ==} + peerDependencies: + astro-eslint-parser: ^0.16.0 + eslint: '>=8.0.0' + svelte: '>=3.0.0' + svelte-eslint-parser: ^0.33.0 + vue-eslint-parser: '>=9.0.0' + peerDependenciesMeta: + astro-eslint-parser: + optional: true + svelte: + optional: true + svelte-eslint-parser: + optional: true + vue-eslint-parser: + optional: true + dependencies: + '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + minimatch: 9.0.3 + natural-compare-lite: 1.4.0 + vue-eslint-parser: 9.4.0(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-toml@0.9.2(eslint@8.56.0): + resolution: {integrity: sha512-ri0xf63PYf3pIq/WY9BIwrqxZmGTIwSkAO0bHddI0ajUwN4KGz6W8vOvdXFHOpRdRfzxlmXze/vfsY/aTEXESg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: '>=6.0.0' dependencies: - eslint: 8.50.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + eslint-compat-utils: 0.4.1(eslint@8.56.0) + lodash: 4.17.21 + toml-eslint-parser: 0.9.3 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.50.0): - resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} + /eslint-plugin-unicorn@50.0.1(eslint@8.56.0): + resolution: {integrity: sha512-KxenCZxqSYW0GWHH18okDlOQcpezcitm5aOSz6EnobyJ6BIByiPDviQRjJIUAjG/tMN11958MxaQ+qCoU6lfDA==} engines: {node: '>=16'} peerDependencies: - eslint: '>=8.44.0' + eslint: '>=8.56.0' dependencies: - '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - ci-info: 3.8.0 + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 clean-regexp: 1.0.0 - eslint: 8.50.0 + core-js-compat: 3.35.0 + eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 - lodash: 4.17.21 pluralize: 8.0.0 read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 semver: 7.5.4 strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.50.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 - eslint: ^8.0.0 + '@typescript-eslint/eslint-plugin': ^6.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-plugin-vitest@0.3.20(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.1): + resolution: {integrity: sha512-O05k4j9TGMOkkghj9dRgpeLDyOSiVIxQWgNDPfhYPm5ioJsehcYV/zkRLekQs+c8+RBCVXucSED3fYOyy2EoWA==} + engines: {node: ^18.0.0 || >= 20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.0.0' + vitest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true + vitest: + optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - eslint-rule-composer: 0.3.0 + '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + vitest: 1.2.1(@types/node@20.11.5) + transitivePeerDependencies: + - supports-color + - typescript dev: true - /eslint-plugin-vue@9.17.0(eslint@8.50.0): - resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} + /eslint-plugin-vue@9.20.1(eslint@8.56.0): + resolution: {integrity: sha512-GyCs8K3lkEvoyC1VV97GJhP1SvqsKCiWGHnbn0gVUYiUhaH2+nB+Dv1uekv1THFMPbBfYxukrzQdltw950k+LQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - eslint: 8.50.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + eslint: 8.56.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.13 semver: 7.5.4 - vue-eslint-parser: 9.3.1(eslint@8.50.0) + vue-eslint-parser: 9.4.0(eslint@8.56.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml@1.9.0(eslint@8.50.0): - resolution: {integrity: sha512-ayuC57WyVQ5+QZ02y62GiB//5+zsiyzUGxUX/mrhLni+jfsKA4KoITjkbR65iUdjjhWpyTJHPcAIFLKQIOwgsw==} + /eslint-plugin-yml@1.12.2(eslint@8.56.0): + resolution: {integrity: sha512-hvS9p08FhPT7i/ynwl7/Wt7ke7Rf4P2D6fT8lZlL43peZDTsHtH2A0SIFQ7Kt7+mJ6if6P+FX3iJhMkdnxQwpg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4 - eslint: 8.50.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + eslint-compat-utils: 0.4.1(eslint@8.56.0) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -4033,6 +3970,16 @@ packages: - supports-color dev: true + /eslint-processor-vue-blocks@0.1.1(@vue/compiler-sfc@3.4.15)(eslint@8.56.0): + resolution: {integrity: sha512-9+dU5lU881log570oBwpelaJmOfOzSniben7IWEDRYQPPWwlvaV7NhOtsTuUWDqpYT+dtKKWPsgz4OkOi+aZnA==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: ^8.50.0 + dependencies: + '@vue/compiler-sfc': 3.4.15 + eslint: 8.56.0 + dev: true + /eslint-rule-composer@0.3.0: resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} engines: {node: '>=4.0.0'} @@ -4059,22 +4006,23 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.50.0: - resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.50.0 - '@humanwhocodes/config-array': 0.11.11 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -4105,19 +4053,19 @@ packages: - supports-color dev: true - /esno@0.17.0: - resolution: {integrity: sha512-w78cQGlptQfsBYfootUCitsKS+MD74uR5L6kNsvwVkJsfzEepIafbvWsx2xK4rcFP4IUftt4F6J8EhagUxX+Bg==} + /esno@4.0.0: + resolution: {integrity: sha512-tmaM9gfnSWqzePVJ5FJLYX9mMyE6ZevvOIvd1CMoMk2Fn1F3aKI/OQPjubS5wCIKlPpWfDfKFEtoslCNCiZJpQ==} hasBin: true dependencies: - tsx: 3.12.7 + tsx: 4.7.0 dev: true /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -4151,7 +4099,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.5 dev: true /esutils@2.0.3: @@ -4221,6 +4169,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -4263,8 +4226,8 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4372,7 +4335,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) dev: true /for-each@0.3.3: @@ -4386,7 +4349,7 @@ packages: engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: true /forwarded@0.2.0: @@ -4437,8 +4400,8 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -4457,8 +4420,8 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /get-intrinsic@1.2.1: @@ -4481,25 +4444,35 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-tsconfig@4.7.0: resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} dependencies: resolve-pkg-maps: 1.0.0 dev: true - /giget@1.1.2: - resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /giget@1.2.1: + resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} hasBin: true dependencies: - colorette: 2.0.20 - defu: 6.1.2 - https-proxy-agent: 5.0.1 - mri: 1.2.0 - node-fetch-native: 1.1.1 - pathe: 1.1.1 - tar: 6.1.15 - transitivePeerDependencies: - - supports-color + citty: 0.1.5 + consola: 3.2.3 + defu: 6.1.4 + node-fetch-native: 1.6.1 + nypm: 0.3.4 + ohash: 1.1.3 + pathe: 1.1.2 + tar: 6.2.0 dev: true /glob-parent@5.1.2: @@ -4525,7 +4498,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.1 + minimatch: 9.0.3 minipass: 6.0.2 path-scurry: 1.10.1 dev: true @@ -4564,27 +4537,35 @@ packages: type-fest: 0.20.2 dev: true + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 4.0.0 + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.0 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 dev: true /gopd@1.0.1: @@ -4704,7 +4685,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /htmlparser2@6.1.0: @@ -4716,15 +4697,6 @@ packages: entities: 2.2.0 dev: true - /htmlparser2@8.0.1: - resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.0.1 - entities: 4.4.0 - dev: true - /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: true @@ -4784,16 +4756,6 @@ packages: - debug dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -4804,6 +4766,11 @@ packages: engines: {node: '>=14.18.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4833,6 +4800,11 @@ packages: engines: {node: '>= 4'} dev: true + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -5078,13 +5050,13 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.7.1 + '@types/node': 20.11.5 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jiti@1.20.0: - resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true dev: true @@ -5173,11 +5145,11 @@ packages: hasBin: true dev: true - /jsonc-eslint-parser@2.3.0: - resolution: {integrity: sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==} + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.5.4 @@ -5272,9 +5244,12 @@ packages: json5: 2.2.3 dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 dev: true /locate-path@5.0.0: @@ -5362,8 +5337,15 @@ packages: /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 dev: true /lower-case@2.0.2: @@ -5397,8 +5379,8 @@ packages: engines: {node: 14 || >=16.14} dev: true - /magic-string@0.30.3: - resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5435,14 +5417,6 @@ packages: fs-monkey: 1.0.5 dev: true - /memory-fs@0.5.0: - resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: true - /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true @@ -5470,7 +5444,7 @@ packages: /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -5529,7 +5503,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /minimalistic-assert@1.0.1: @@ -5542,8 +5516,8 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -5594,12 +5568,21 @@ packages: /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.0 dev: true + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + /module-alias@2.2.3: resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} dev: true @@ -5650,6 +5633,16 @@ packages: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -5674,8 +5667,8 @@ packages: tslib: 2.6.2 dev: true - /node-fetch-native@1.1.1: - resolution: {integrity: sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw==} + /node-fetch-native@1.6.1: + resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==} dev: true /node-fetch@2.7.0: @@ -5698,17 +5691,21 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /node-releases@2.0.3: resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} dev: true - /nodemon@3.0.1: - resolution: {integrity: sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==} + /nodemon@3.0.3: + resolution: {integrity: sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==} engines: {node: '>=10'} hasBin: true dependencies: chokidar: 3.5.3 - debug: 3.2.7(supports-color@5.5.0) + debug: 4.3.4(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 @@ -5776,6 +5773,17 @@ packages: boolbase: 1.0.0 dev: true + /nypm@0.3.4: + resolution: {integrity: sha512-1JLkp/zHBrkS3pZ692IqOaIKSYHmQXgqfELk6YTOfVBnwealAmPA1q2kKK7PHJAHSMBozerThEFZXP3G6o7Ukg==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + dependencies: + citty: 0.1.5 + execa: 8.0.1 + pathe: 1.1.2 + ufo: 1.3.2 + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5789,8 +5797,8 @@ packages: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true - /ohash@1.1.2: - resolution: {integrity: sha512-9CIOSq5945rI045GFtcO3uudyOkYVY1nyfFxVQp+9BRgslr8jPNiSSrsFGg/BNTUFOLqx0P5tng6G32brIPw0w==} + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} dev: true /on-finished@2.4.1: @@ -5902,9 +5910,9 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: yocto-queue: 1.0.0 dev: true @@ -5961,6 +5969,11 @@ packages: is-hexadecimal: 1.0.4 dev: true + /parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + dev: true + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -5997,6 +6010,10 @@ packages: tslib: 2.6.2 dev: true + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -6043,10 +6060,19 @@ packages: engines: {node: '>=8'} dev: true + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -6075,8 +6101,8 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 dev: true /pluralize@8.0.0: @@ -6089,7 +6115,7 @@ packages: engines: {node: '>= 0.12.0'} dependencies: async: 2.6.4 - debug: 3.2.7(supports-color@5.5.0) + debug: 3.2.7 mkdirp: 0.5.6 transitivePeerDependencies: - supports-color @@ -6165,12 +6191,6 @@ packages: postcss: 8.4.27 dev: true - /postcss-import-resolver@2.0.0: - resolution: {integrity: sha512-y001XYgGvVwgxyxw9J1a5kqM/vtmIQGzx34g0A0Oy44MFcy/ZboZw1hu/iN3VYFjSTRzbvd7zZJJz0Kh0AGkTw==} - dependencies: - enhanced-resolve: 4.5.0 - dev: true - /postcss-load-config@4.0.1: resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} @@ -6198,7 +6218,7 @@ packages: klona: 2.0.6 postcss: 8.4.27 semver: 7.5.4 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /postcss-merge-longhand@5.1.7(postcss@8.4.27): @@ -6481,6 +6501,15 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true + + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -6502,11 +6531,11 @@ packages: renderkid: 3.0.0 dev: true - /pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.0 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -6524,7 +6553,7 @@ packages: chalk: 2.4.2 figures: 2.0.0 log-update: 2.3.0 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /prompts@2.4.2: @@ -6543,10 +6572,6 @@ packages: ipaddr.js: 1.9.1 dev: true - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true - /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true @@ -6601,7 +6626,7 @@ packages: /rc9@2.1.1: resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} dependencies: - defu: 6.1.2 + defu: 6.1.4 destr: 2.0.1 flat: 5.0.2 dev: true @@ -6661,10 +6686,6 @@ packages: dependencies: picomatch: 2.3.1 - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: false - /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -6769,20 +6790,27 @@ packages: glob: 10.3.10 dev: true - /rollup@3.29.2: - resolution: {integrity: sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rollup@4.9.5: + resolution: {integrity: sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.5 optionalDependencies: - fsevents: 2.3.2 + '@rollup/rollup-android-arm-eabi': 4.9.5 + '@rollup/rollup-android-arm64': 4.9.5 + '@rollup/rollup-darwin-arm64': 4.9.5 + '@rollup/rollup-darwin-x64': 4.9.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.5 + '@rollup/rollup-linux-arm64-gnu': 4.9.5 + '@rollup/rollup-linux-arm64-musl': 4.9.5 + '@rollup/rollup-linux-riscv64-gnu': 4.9.5 + '@rollup/rollup-linux-x64-gnu': 4.9.5 + '@rollup/rollup-linux-x64-musl': 4.9.5 + '@rollup/rollup-win32-arm64-msvc': 4.9.5 + '@rollup/rollup-win32-ia32-msvc': 4.9.5 + '@rollup/rollup-win32-x64-msvc': 4.9.5 + fsevents: 2.3.3 dev: true /run-applescript@5.0.0: @@ -6828,8 +6856,8 @@ packages: ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) - /scule@1.0.0: - resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} + /scule@1.2.0: + resolution: {integrity: sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw==} dev: true /select-hose@2.0.0: @@ -6974,8 +7002,8 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true @@ -7004,9 +7032,9 @@ packages: engines: {node: '>=8'} dev: true - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} dev: true /sockjs@0.3.24: @@ -7058,6 +7086,13 @@ packages: spdx-license-ids: 3.0.11 dev: true + /spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + dev: true + /spdx-license-ids@3.0.11: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} dev: true @@ -7065,7 +7100,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -7079,7 +7114,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -7118,8 +7153,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /std-env@3.4.3: - resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true /string-argv@0.3.1: @@ -7210,7 +7245,7 @@ packages: /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 dev: true /stylehacks@5.1.1(postcss@8.4.27): @@ -7284,17 +7319,12 @@ packages: stable: 0.1.8 dev: true - /tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - dev: true - /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -7313,7 +7343,32 @@ packages: supports-hyperlinks: 2.3.0 dev: false - /terser-webpack-plugin@5.3.9(esbuild@0.18.20)(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(esbuild@0.19.11)(webpack@5.88.2): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + esbuild: 0.19.11 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.17.7 + webpack: 5.88.2(esbuild@0.19.11) + dev: true + + /terser-webpack-plugin@5.3.9(esbuild@0.19.11)(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -7330,12 +7385,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.18 - esbuild: 0.18.20 + esbuild: 0.19.11 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.17.7 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.89.0(esbuild@0.19.11) dev: true /terser@5.17.7: @@ -7344,7 +7399,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.3 - acorn: 8.10.0 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -7377,24 +7432,24 @@ packages: loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: true - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} dev: true - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -7418,6 +7473,13 @@ packages: engines: {node: '>=0.6'} dev: true + /toml-eslint-parser@0.9.3: + resolution: {integrity: sha512-moYoCvkNUAPCxSW9jmHmRElhm4tVJpHL8ItC/+uYD0EpPSFXbck7yREz9tNdJVTSpHVod8+HoipcpbQ0oE6gsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + dev: true + /totalist@3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} @@ -7445,35 +7507,34 @@ packages: hasBin: true dev: true - /ts-api-utils@1.0.1(typescript@5.2.2): + /ts-api-utils@1.0.1(typescript@5.3.3): resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.2.2 + typescript: 5.3.3 dev: true /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@7.2.0(typescript@5.2.2): - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} + /tsup@8.0.1(typescript@5.3.3): + resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} + engines: {node: '>=18'} hasBin: true peerDependencies: + '@microsoft/api-extractor': ^7.36.0 '@swc/core': ^1 postcss: ^8.4.12 - typescript: '>=4.1.0' + typescript: '>=4.5.0' peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true '@swc/core': optional: true postcss: @@ -7481,45 +7542,35 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.1(esbuild@0.18.20) + bundle-require: 4.0.1(esbuild@0.19.11) cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.20 + debug: 4.3.4(supports-color@5.5.0) + esbuild: 0.19.11 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 postcss-load-config: 4.0.1 resolve-from: 5.0.0 - rollup: 3.29.4 + rollup: 4.9.5 source-map: 0.8.0-beta.0 sucrase: 3.21.0 tree-kill: 1.2.2 - typescript: 5.2.2 + typescript: 5.3.3 transitivePeerDependencies: - supports-color - ts-node dev: true - /tsutils@3.21.0(typescript@5.2.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.2.2 - dev: true - - /tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + /tsx@4.7.0: + resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 - '@esbuild-kit/esm-loader': 2.5.5 + esbuild: 0.19.11 + get-tsconfig: 4.7.2 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /type-check@0.4.0: @@ -7562,43 +7613,57 @@ packages: mime-types: 2.1.35 dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true - dev: true /ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} dev: true + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true + /unctx@2.3.1: resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 estree-walker: 3.0.3 - magic-string: 0.30.3 - unplugin: 1.5.0 + magic-string: 0.30.5 + unplugin: 1.6.0 dev: true /undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true - /unimport@3.3.0(rollup@3.29.4): - resolution: {integrity: sha512-3jhq3ZG5hFZzrWGDCpx83kjPzefP/EeuKkIO1T0MA4Zwj+dO/Og1mFvZ4aZ5WSDm0FVbbdVIRH1zKBG7c4wOpg==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + + /unimport@3.7.1(rollup@4.9.5): + resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.1.0(rollup@4.9.5) + acorn: 8.11.3 escape-string-regexp: 5.0.0 - fast-glob: 3.3.1 - local-pkg: 0.4.3 - magic-string: 0.30.3 - mlly: 1.4.2 - pathe: 1.1.1 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + mlly: 1.5.0 + pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.2.0 strip-literal: 1.3.0 - unplugin: 1.5.0 + unplugin: 1.6.0 transitivePeerDependencies: - rollup dev: true @@ -7619,13 +7684,13 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin@1.5.0: - resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + /unplugin@1.6.0: + resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 chokidar: 3.5.3 webpack-sources: 3.2.3 - webpack-virtual-modules: 0.5.0 + webpack-virtual-modules: 0.6.1 /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -7639,10 +7704,10 @@ packages: '@babel/core': 7.22.10 '@babel/standalone': 7.22.10 '@babel/types': 7.22.10 - defu: 6.1.2 - jiti: 1.20.0 + defu: 6.1.4 + jiti: 1.21.0 mri: 1.2.0 - scule: 1.0.0 + scule: 1.2.0 transitivePeerDependencies: - supports-color dev: true @@ -7657,6 +7722,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -7702,17 +7778,16 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.5(@types/node@20.7.1): - resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} - engines: {node: '>=v14.18.0'} + /vite-node@1.2.1(@types/node@20.11.5): + resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.2 + debug: 4.3.4(supports-color@5.5.0) pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.7.1) + vite: 5.0.12(@types/node@20.11.5) transitivePeerDependencies: - '@types/node' - less @@ -7724,37 +7799,37 @@ packages: - terser dev: true - /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==} + /vite-plugin-inspect@0.8.1(@nuxt/kit@3.9.3)(rollup@4.9.5)(vite@5.0.12): + resolution: {integrity: sha512-oPBPVGp6tBd5KdY/qY6lrbLXqrbHRG0hZLvEaJfiZ/GQfDB+szRuLHblQh1oi1Hhh8GeLit/50l4xfs2SA+TCA==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' - vite: ^3.1.0 || ^4.0.0 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: '@nuxt/kit': optional: true dependencies: '@antfu/utils': 0.7.6 - '@nuxt/kit': 3.7.4(rollup@3.29.4) - '@rollup/pluginutils': 5.0.2(rollup@3.29.4) - debug: 4.3.4 + '@nuxt/kit': 3.9.3(rollup@4.9.5) + '@rollup/pluginutils': 5.1.0(rollup@4.9.5) + debug: 4.3.4(supports-color@5.5.0) error-stack-parser-es: 0.1.1 fs-extra: 11.1.1 open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vite: 4.4.9(@types/node@20.7.1) + vite: 5.0.12(@types/node@20.11.5) transitivePeerDependencies: - rollup - supports-color dev: true - /vite@4.4.9(@types/node@20.7.1): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} - engines: {node: ^14.18.0 || >=16.0.0} + /vite@5.0.12(@types/node@20.11.5): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' + '@types/node': ^18.0.0 || >=20.0.0 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -7777,30 +7852,30 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.1 - esbuild: 0.18.20 - postcss: 8.4.27 - rollup: 3.29.2 + '@types/node': 20.11.5 + esbuild: 0.19.11 + postcss: 8.4.33 + rollup: 4.9.5 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /vitest@0.34.5: - resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} - engines: {node: '>=v14.18.0'} + /vitest@1.2.1(@types/node@20.11.5): + resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': ^1.0.0 + '@vitest/ui': ^1.0.0 happy-dom: '*' jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/node': + optional: true '@vitest/browser': optional: true '@vitest/ui': @@ -7809,36 +7884,28 @@ packages: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 - '@types/node': 20.7.1 - '@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 - acorn: 8.10.0 - acorn-walk: 8.2.0 + '@types/node': 20.11.5 + '@vitest/expect': 1.2.1 + '@vitest/runner': 1.2.1 + '@vitest/snapshot': 1.2.1 + '@vitest/spy': 1.2.1 + '@vitest/utils': 1.2.1 + acorn-walk: 8.3.2 cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.3 + chai: 4.4.1 + debug: 4.3.4(supports-color@5.5.0) + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 - std-env: 3.4.3 + std-env: 3.7.0 strip-literal: 1.3.0 - tinybench: 2.5.0 - tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.7.1) - vite-node: 0.34.5(@types/node@20.7.1) + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.0.12(@types/node@20.11.5) + vite-node: 1.2.1(@types/node@20.11.5) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -7850,14 +7917,14 @@ packages: - terser dev: true - /vue-eslint-parser@9.3.1(eslint@8.50.0): - resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} + /vue-eslint-parser@9.4.0(eslint@8.56.0): + resolution: {integrity: sha512-7KsNBb6gHFA75BtneJsoK/dbZ281whUIwFYdQxA68QrCrGMXYzUMbPDHGcOQ0OocIVKrWSKWXZ4mL7tonCXoUw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4 - eslint: 8.50.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -7872,7 +7939,7 @@ packages: resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} dev: true - /vue-loader@15.11.1(css-loader@6.8.1)(webpack@5.88.2): + /vue-loader@15.11.1(@vue/compiler-sfc@3.4.15)(css-loader@6.8.1)(webpack@5.88.2): resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} peerDependencies: '@vue/compiler-sfc': ^3.0.8 @@ -7891,13 +7958,14 @@ packages: vue-template-compiler: optional: true dependencies: + '@vue/compiler-sfc': 3.4.15 '@vue/component-compiler-utils': 3.3.0 css-loader: 6.8.1(webpack@5.88.2) hash-sum: 1.0.2 loader-utils: 1.4.2 vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) transitivePeerDependencies: - arc-templates - atpl @@ -7954,7 +8022,7 @@ packages: - whiskers dev: true - /vue-loader@17.3.0(vue@3.3.4)(webpack@5.88.2): + /vue-loader@17.3.0(@vue/compiler-sfc@3.4.15)(vue@3.4.15)(webpack@5.88.2): resolution: {integrity: sha512-VUURABiN0TIUz0yvJJ/V/rZjGUh10JZtD+IDI5bXFslzFi9mV6ebKkPzoqiSi8e0vh8Ip7JHJx+I0AzAG0KsCA==} peerDependencies: '@vue/compiler-sfc': '*' @@ -7966,11 +8034,12 @@ packages: vue: optional: true dependencies: + '@vue/compiler-sfc': 3.4.15 chalk: 4.1.2 hash-sum: 2.0.0 - vue: 3.3.4 + vue: 3.4.15(typescript@5.3.3) watchpack: 2.4.0 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /vue-style-loader@4.1.3: @@ -7991,26 +8060,32 @@ packages: resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} dev: true - /vue-tsc@1.8.15(typescript@5.2.2): - resolution: {integrity: sha512-4DoB3LUj7IToLmggoCxRiFG+QU5lem0nv03m1ocqugXA9rSVoTOEoYYaP8vu8b99Eh+/cCVdYOeIAQ+RsgUYUw==} + /vue-tsc@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@vue/language-core': 1.8.15(typescript@5.2.2) - '@vue/typescript': 1.8.15(typescript@5.2.2) + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.3.3) semver: 7.5.4 - typescript: 5.2.2 + typescript: 5.3.3 dev: true - /vue@3.3.4: - resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + /vue@3.4.15(typescript@5.3.3): + resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/compiler-sfc': 3.3.4 - '@vue/runtime-dom': 3.3.4 - '@vue/server-renderer': 3.3.4(vue@3.3.4) - '@vue/shared': 3.3.4 + '@vue/compiler-dom': 3.4.15 + '@vue/compiler-sfc': 3.4.15 + '@vue/runtime-dom': 3.4.15 + '@vue/server-renderer': 3.4.15(vue@3.4.15) + '@vue/shared': 3.4.15 + typescript: 5.3.3 /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} @@ -8045,7 +8120,7 @@ packages: hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.10.0 + acorn: 8.11.3 acorn-walk: 8.2.0 commander: 7.2.0 escape-string-regexp: 4.0.0 @@ -8085,7 +8160,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) dev: true /webpack-dev-server@4.15.1(debug@4.3.4)(webpack@5.88.2): @@ -8129,7 +8204,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.88.2(esbuild@0.18.20) + webpack: 5.88.2(esbuild@0.19.11) webpack-dev-middleware: 5.3.3(webpack@5.88.2) ws: 8.14.2 transitivePeerDependencies: @@ -8156,10 +8231,10 @@ packages: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} dev: true - /webpack-virtual-modules@0.5.0: - resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} - /webpack@5.88.2(esbuild@0.18.20): + /webpack@5.88.2(esbuild@0.19.11): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -8170,12 +8245,12 @@ packages: optional: true dependencies: '@types/eslint-scope': 3.7.3 - '@types/estree': 1.0.0 + '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.8.2 - acorn-import-assertions: 1.9.0(acorn@8.8.2) + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.20.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 @@ -8190,7 +8265,47 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.19.11)(webpack@5.88.2) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /webpack@5.89.0(esbuild@0.19.11): + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.3 + '@types/estree': 1.0.0 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.10 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.2.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(esbuild@0.19.11)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -8332,12 +8447,6 @@ packages: engines: {node: '>=12'} dev: true - /xregexp@5.1.1: - resolution: {integrity: sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==} - dependencies: - '@babel/runtime-corejs3': 7.22.15 - dev: false - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -8379,6 +8488,11 @@ packages: engines: {node: '>=10'} dev: true + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -8392,6 +8506,19 @@ packages: yargs-parser: 20.2.9 dev: true + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} From ffe22cceb4a7fae5c6d7bd5b357197be1d1818c6 Mon Sep 17 00:00:00 2001 From: KeJunMao Date: Sat, 20 Jan 2024 14:54:20 +0800 Subject: [PATCH 02/19] refactor: use ast to parse code --- src/core/context.ts | 203 ------------------ src/core/context/generator.ts | 34 +++ src/core/context/index.ts | 56 +++++ src/core/context/lexer.ts | 57 +++++ src/core/context/parser.ts | 42 ++++ src/core/directive.ts | 10 +- src/core/directives/define.ts | 21 -- src/core/directives/error.ts | 23 -- src/core/directives/if.ts | 83 +++---- src/core/directives/index.ts | 10 +- src/core/index.ts | 5 +- src/core/types/directive.ts | 29 +++ src/core/types/index.ts | 3 + src/core/types/node.ts | 20 ++ src/core/types/token.ts | 10 + src/core/unplugin.ts | 10 +- src/types.ts | 59 +---- test/directive.test.ts | 16 -- test/directives/__snapshots__/if.test.ts.snap | 71 ------ test/directives/define.test.ts | 70 ------ test/directives/error.test.ts | 34 --- test/directives/if.test.ts | 191 ++++++++-------- test/lexer.test.ts | 36 ++++ 23 files changed, 427 insertions(+), 666 deletions(-) delete mode 100644 src/core/context.ts create mode 100644 src/core/context/generator.ts create mode 100644 src/core/context/index.ts create mode 100644 src/core/context/lexer.ts create mode 100644 src/core/context/parser.ts delete mode 100644 src/core/directives/define.ts delete mode 100644 src/core/directives/error.ts create mode 100644 src/core/types/directive.ts create mode 100644 src/core/types/index.ts create mode 100644 src/core/types/node.ts create mode 100644 src/core/types/token.ts delete mode 100644 test/directive.test.ts delete mode 100644 test/directives/__snapshots__/if.test.ts.snap delete mode 100644 test/directives/define.test.ts delete mode 100644 test/directives/error.test.ts create mode 100644 test/lexer.test.ts diff --git a/src/core/context.ts b/src/core/context.ts deleted file mode 100644 index 1b533b2..0000000 --- a/src/core/context.ts +++ /dev/null @@ -1,203 +0,0 @@ -import process from 'node:process' -import MagicString from 'magic-string' - -import type { Logger } from 'vite' -import { createFilter, createLogger, loadEnv } from 'vite' -import XRegExp from 'xregexp' -import type { - Directive, - MatchGroup, - NormalDirective, - RecursiveDirective, - UserOptions, -} from '../types' - -import { builtinDirectives } from './directives' - -export interface replaceOptions { - code: string - id: string - directive: Directive -} -export function sortUserDirectives( - directives: Directive[], -): [Directive[], Directive[], Directive[]] { - const preDirectives: Directive[] = [] - const postDirectives: Directive[] = [] - const normalDirectives: Directive[] = [] - - if (directives) { - directives.forEach((p) => { - if (p.enforce === 'pre') - preDirectives.push(p) - else if (p.enforce === 'post') - postDirectives.push(p) - else normalDirectives.push(p) - }) - } - - return [preDirectives, normalDirectives, postDirectives] -} - -export class Context { - cwd: string - XRegExp: typeof XRegExp - env: Record - directives: Directive[] = [] - logger: Logger - directiveLoggers: Record - filter: (id: unknown) => boolean - constructor({ cwd = process.cwd(), directives = [], exclude = [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/], include = ['**/*'] }: UserOptions = {}) { - this.cwd = cwd - this.XRegExp = XRegExp - this.env = loadEnv( - process.env.NODE_ENV || 'development', - cwd, - '', - ) - - if (directives.length === 0) { - directives = [...builtinDirectives.map(v => - typeof v === 'function' ? v(this) : v, - )] - } - - const [preDirectives, normalDirectives, postDirectives] = sortUserDirectives(directives.map(v => - typeof v === 'function' ? v(this) : v, - )) - - this.directives = [...preDirectives, ...normalDirectives, ...postDirectives] - - this.logger = createLogger(undefined, { - prefix: 'unplugin-preprocessor-directives', - }) - this.directiveLoggers = this.directives.reduce((acc, directive) => { - acc[directive.name] = createLogger(undefined, { - prefix: `unplugin-preprocessor-directives:${directive.name}`, - }) - return acc - }, {} as Record) - - this.filter = createFilter(include, exclude) - } - - replace({ code, id, directive: _directive }: replaceOptions) { - const directive = _directive as NormalDirective - return this.XRegExp.replace(code, directive.pattern, directive.processor({ - id, - code, - directive, - ctx: this, - })) - } - - replaceRecursive({ - code, - id, - directive: _directive, - }: replaceOptions) { - const directive = _directive as RecursiveDirective - const startRegex = new RegExp(directive.pattern.start, 'mi') - const endRegex = new RegExp(directive.pattern.end, 'mi') - - const replace = (code: string) => { - const matches = XRegExp.matchRecursive( - code, - startRegex.source, - endRegex.source, - 'gmi', - { - valueNames: ['between', 'left', 'match', 'right'], - }, - ) - let builder = '' - const matchGroup: MatchGroup = { - left: null, - match: '', - right: null, - } - - if (!matches.length) - builder += code - - matches.forEach((match) => { - switch (match.name) { - case 'between': - builder += match.value - break - case 'left': - matchGroup.left = startRegex.exec(match.value) - break - case 'match': - matchGroup.match = match.value - break - case 'right': - matchGroup.right = endRegex.exec(match.value) - builder += directive.processor({ - id, - code, - directive, - ctx: this, - - replace, - matchGroup, - }) - break - } - }) - - return builder - } - - return replace(code) - } - - createSource(code: string, id: string) { - return new MagicString(code, { - filename: id, - }) - } - - transform(code: string, id: string) { - if (!this.filter(id)) - return - const source = this.createSource(code, id) - const data = this.directives.reduce((acc, directive) => { - const { exclude = [], include = ['**/*'] } = directive - const filter = createFilter(include, exclude) - if (!filter(id)) - return acc - try { - acc = directive.nested - ? this.replaceRecursive({ - code, - id, - directive: directive as RecursiveDirective, - }) - : this.replace({ - code: acc, - id, - directive: directive as NormalDirective, - }) - return acc - } - catch (error: any) { - this.directiveLoggers[directive.name].error(error) - return acc - } - }, code) - if (data !== code) - source.overwrite(0, source.length(), data) - - if (source.hasChanged()) { - return { - code: source.toString(), - map: source.generateMap({ - source: id, - file: `${id}.map`, - includeContent: true, - }), - } - } - } -} diff --git a/src/core/context/generator.ts b/src/core/context/generator.ts new file mode 100644 index 0000000..0a4b65c --- /dev/null +++ b/src/core/context/generator.ts @@ -0,0 +1,34 @@ +import type { Node, ProgramNode } from './types' + +export function generate(ast: ProgramNode) { + function generate(node: Node): string { + switch (node.type) { + case 'Program': + return node.body.map(generate).join('\n') + case 'CodeStatement': + return node.value + case 'IfStatement': + let code = '' + if (node.kind === 'else') + code = '// #v-else' + + else + code = `// #v-${node.kind} ${node.test}` + + const consequentCode = node.consequent.map(generate).join('\n') + code += `\n${consequentCode}` + if (node.alternate.length) { + const alternateCode = node.alternate.map(generate).join('\n') + code += `\n${alternateCode}` + } + else { + code += '\n// #v-endif' + } + return code + default: + throw new Error(`Unknown node type: ${node.type}`) + } + } + + return generate(ast) +} diff --git a/src/core/context/index.ts b/src/core/context/index.ts new file mode 100644 index 0000000..ff515dd --- /dev/null +++ b/src/core/context/index.ts @@ -0,0 +1,56 @@ +import { UserOptions } from '../../types' +import { Lex, ObjectDirective, Parse } from '../types' +import { Lexer } from './lexer' +import { Parser } from './parser' +export * from './lexer' +export * from './parser' + +export function resolveOptions(options?: UserOptions): Required { + return { + cwd: process.cwd(), + include: ['**/*'], + exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/], + directives: [], + ...options, + } +} + +export function sortUserDirectives( + directives: ObjectDirective[], +): [ObjectDirective[], ObjectDirective[], ObjectDirective[]] { + const preDirectives: ObjectDirective[] = [] + const postDirectives: ObjectDirective[] = [] + const normalDirectives: ObjectDirective[] = [] + + if (directives) { + directives.forEach((p) => { + if (p.enforce === 'pre') + preDirectives.push(p) + else if (p.enforce === 'post') + postDirectives.push(p) + else normalDirectives.push(p) + }) + } + + return [preDirectives, normalDirectives, postDirectives] +} + +export class Context { + options: Required + directives: ObjectDirective[] + lexers: Lex[] + parsers: Parse[] + constructor(options?: UserOptions) { + this.options = resolveOptions(options) + this.directives = sortUserDirectives(this.options.directives.map(d => typeof d === 'function' ? d(this) : d)).flat() + this.lexers = this.directives.map(d => d.lex) + this.parsers = this.directives.map(d => d.parse) + } + + transform(code: string, id: string) { + const tokens = Lexer.lex(code, this.lexers) + const ast = Parser.parse(tokens, this.parsers) + console.log(ast); + + } +} diff --git a/src/core/context/lexer.ts b/src/core/context/lexer.ts new file mode 100644 index 0000000..ff0e1fa --- /dev/null +++ b/src/core/context/lexer.ts @@ -0,0 +1,57 @@ +import { CodeToken, IfToken, Lex, SimpleToken } from '../types' +export function isComment(line: string) { + return ( + // JS comment + line.slice(0, 3) === '// ' + // CSS comment + || line.slice(0, 3) === '/* ' + // HTML comment + || line.slice(0, 5) === ' diff --git a/test/fixtures/html/elif.html b/test/fixtures/html/elif.html deleted file mode 100644 index 728974d..0000000 --- a/test/fixtures/html/elif.html +++ /dev/null @@ -1,7 +0,0 @@ - -
!DEV
- -
TEST
- -
!DEV else
- diff --git a/test/fixtures/html/else.html b/test/fixtures/html/else.html deleted file mode 100644 index 351fe13..0000000 --- a/test/fixtures/html/else.html +++ /dev/null @@ -1,5 +0,0 @@ - -
!DEV
- -
!DEV else
- diff --git a/test/fixtures/html/empty.html b/test/fixtures/html/empty.html deleted file mode 100644 index e69de29..0000000 diff --git a/test/fixtures/html/if.html b/test/fixtures/html/if.html deleted file mode 100644 index 9f64ba6..0000000 --- a/test/fixtures/html/if.html +++ /dev/null @@ -1,3 +0,0 @@ - -
DEV
- diff --git a/test/fixtures/html/nested.html b/test/fixtures/html/nested.html deleted file mode 100644 index a7a4217..0000000 --- a/test/fixtures/html/nested.html +++ /dev/null @@ -1,9 +0,0 @@ - -
- -
!DEV !TEST
- -
else
- -
- diff --git a/test/fixtures/html/undef.html b/test/fixtures/html/undef.html deleted file mode 100644 index 5f6fae7..0000000 --- a/test/fixtures/html/undef.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/fixtures/js/define.js b/test/fixtures/js/define.js deleted file mode 100644 index 70f44db..0000000 --- a/test/fixtures/js/define.js +++ /dev/null @@ -1 +0,0 @@ -// #define JS diff --git a/test/fixtures/js/elif.js b/test/fixtures/js/elif.js deleted file mode 100644 index ae54c0c..0000000 --- a/test/fixtures/js/elif.js +++ /dev/null @@ -1,7 +0,0 @@ -// #if !DEV -console.log("!DEV") -// #elif TEST -console.log("TEST") -// #else -console.log("!DEV else") -// #endif diff --git a/test/fixtures/js/else.js b/test/fixtures/js/else.js deleted file mode 100644 index 06612e7..0000000 --- a/test/fixtures/js/else.js +++ /dev/null @@ -1,5 +0,0 @@ -// #if !DEV -console.log("!DEV") -// #else -console.log("!DEV else") -// #endif diff --git a/test/fixtures/js/empty.js b/test/fixtures/js/empty.js deleted file mode 100644 index e69de29..0000000 diff --git a/test/fixtures/js/if.js b/test/fixtures/js/if.js deleted file mode 100644 index dd8e5fd..0000000 --- a/test/fixtures/js/if.js +++ /dev/null @@ -1,3 +0,0 @@ -// #if DEV -console.log("DEV") -// #endif diff --git a/test/fixtures/js/nested.js b/test/fixtures/js/nested.js deleted file mode 100644 index 14cb932..0000000 --- a/test/fixtures/js/nested.js +++ /dev/null @@ -1,7 +0,0 @@ -// #if DEV - // #if !TEST - console.log("!DEV !TEST") - // #else - console.log("else") - // #endif -// #endif diff --git a/test/fixtures/js/undef.js b/test/fixtures/js/undef.js deleted file mode 100644 index ecfa019..0000000 --- a/test/fixtures/js/undef.js +++ /dev/null @@ -1 +0,0 @@ -// #undef JS From 4fcae937abde4ce2f37a0eb8cf2dec543a612540 Mon Sep 17 00:00:00 2001 From: KeJunMao Date: Sat, 20 Jan 2024 16:39:37 +0800 Subject: [PATCH 04/19] feat: support basic if transform --- src/core/context/generator.ts | 44 +++++++++++------------ src/core/context/index.ts | 16 +++++++-- src/core/context/lexer.ts | 9 ++--- src/core/context/parser.ts | 6 +--- src/core/context/transformer.ts | 37 +++++++++++++++++++ src/core/directives/if.ts | 64 +++++++++++++++++++++++++++++++-- src/core/directives/index.ts | 2 +- src/core/types/directive.ts | 7 ++++ src/core/unplugin.ts | 14 ++++++-- 9 files changed, 156 insertions(+), 43 deletions(-) create mode 100644 src/core/context/transformer.ts diff --git a/src/core/context/generator.ts b/src/core/context/generator.ts index 0a4b65c..9060add 100644 --- a/src/core/context/generator.ts +++ b/src/core/context/generator.ts @@ -1,34 +1,30 @@ -import type { Node, ProgramNode } from './types' +import { Generate, SimpleNode } from "../types"; -export function generate(ast: ProgramNode) { - function generate(node: Node): string { +export class Generator { + constructor(public node: SimpleNode, public generates: Generate[] = []) { + } + + walk(node: SimpleNode): string | void { switch (node.type) { case 'Program': - return node.body.map(generate).join('\n') + return node.body.map(this.walk.bind(this)).filter((n: any) => !!n).join('\n') case 'CodeStatement': return node.value - case 'IfStatement': - let code = '' - if (node.kind === 'else') - code = '// #v-else' - - else - code = `// #v-${node.kind} ${node.test}` + } - const consequentCode = node.consequent.map(generate).join('\n') - code += `\n${consequentCode}` - if (node.alternate.length) { - const alternateCode = node.alternate.map(generate).join('\n') - code += `\n${alternateCode}` - } - else { - code += '\n// #v-endif' - } - return code - default: - throw new Error(`Unknown node type: ${node.type}`) + for (const generate of this.generates) { + const generated = generate.call(this, node) + if (generated) return generated } + + throw new Error(`Unknown node type: ${node.type}`); + } + + private generate(): string { + return this.walk(this.node) as string } - return generate(ast) + static generate(node: SimpleNode, generates: Generate[] = []) { + return new Generator(node, generates).generate() + } } diff --git a/src/core/context/index.ts b/src/core/context/index.ts index ff515dd..ededd29 100644 --- a/src/core/context/index.ts +++ b/src/core/context/index.ts @@ -1,7 +1,10 @@ +import { createFilter } from 'vite' import { UserOptions } from '../../types' -import { Lex, ObjectDirective, Parse } from '../types' +import { Lex, ObjectDirective, Parse, Transform } from '../types' +import { Generator } from './generator' import { Lexer } from './lexer' import { Parser } from './parser' +import { Transformer } from './transformer' export * from './lexer' export * from './parser' @@ -40,17 +43,26 @@ export class Context { directives: ObjectDirective[] lexers: Lex[] parsers: Parse[] + transforms: Transform[] + filter: (id: string) => boolean + env: Record = process.env constructor(options?: UserOptions) { this.options = resolveOptions(options) this.directives = sortUserDirectives(this.options.directives.map(d => typeof d === 'function' ? d(this) : d)).flat() this.lexers = this.directives.map(d => d.lex) this.parsers = this.directives.map(d => d.parse) + this.transforms = this.directives.map(d => d.transform) + this.filter = createFilter(this.options.include, this.options.exclude) } transform(code: string, id: string) { const tokens = Lexer.lex(code, this.lexers) const ast = Parser.parse(tokens, this.parsers) - console.log(ast); + const transformed = Transformer.transform(ast, this.transforms) + if (transformed) { + const generated = Generator.generate(transformed) + return generated + } } } diff --git a/src/core/context/lexer.ts b/src/core/context/lexer.ts index ff0e1fa..91cac4d 100644 --- a/src/core/context/lexer.ts +++ b/src/core/context/lexer.ts @@ -1,4 +1,4 @@ -import { CodeToken, IfToken, Lex, SimpleToken } from '../types' +import { CodeToken, Lex, SimpleToken } from '../types' export function isComment(line: string) { return ( // JS comment @@ -11,13 +11,9 @@ export function isComment(line: string) { } export class Lexer { - code: string current = 0 tokens: SimpleToken[] = [] - lexers: Lex[] - constructor(code: string, lexers: Lex[] = []) { - this.code = code - this.lexers = lexers + constructor(public code: string, public lexers: Lex[] = []) { } private lex() { @@ -38,7 +34,6 @@ export class Lexer { this.current = endIndex continue scanner } - } } this.tokens.push({ diff --git a/src/core/context/parser.ts b/src/core/context/parser.ts index 484c016..88a36c6 100644 --- a/src/core/context/parser.ts +++ b/src/core/context/parser.ts @@ -3,11 +3,7 @@ import { CodeStatement, Parse, ProgramNode, SimpleToken } from '../types' export class Parser { ast: ProgramNode = { type: 'Program', body: [] } current = 0 - tokens: SimpleToken[] - parsers: Parse[] - constructor(tokens: SimpleToken[], parsers: Parse[] = []) { - this.tokens = tokens - this.parsers = parsers + constructor(public tokens: SimpleToken[], public parsers: Parse[] = []) { } walk() { diff --git a/src/core/context/transformer.ts b/src/core/context/transformer.ts new file mode 100644 index 0000000..f583f80 --- /dev/null +++ b/src/core/context/transformer.ts @@ -0,0 +1,37 @@ +import { ProgramNode, SimpleNode, Transform } from "../types"; + +export class Transformer { + constructor(public program: ProgramNode, public transforms: Transform[] = []) { + } + + public walk(node: SimpleNode): SimpleNode | void { + switch (node.type) { + case 'Program': + return { + ...node, + body: node.body.map(this.walk.bind(this)).filter((n: any) => !!n) + } as ProgramNode; + case 'CodeStatement': + return node; + } + + + for (const transformer of this.transforms) { + const transformed = transformer.bind(this)(node) + if (transformed) return transformed + } + + throw new Error(`Unknown node type: ${node.type}`); + } + + private transform(): SimpleNode | void { + const ast = this.walk(this.program) + + return ast + } + + static transform(program: ProgramNode, transforms: Transform[] = []) { + const transformer = new Transformer(program, transforms) + return transformer.transform() + } +} diff --git a/src/core/directives/if.ts b/src/core/directives/if.ts index f2f5e97..38e0abe 100644 --- a/src/core/directives/if.ts +++ b/src/core/directives/if.ts @@ -1,8 +1,32 @@ import { defineDirective } from '../directive' import { IfStatement, IfToken } from '../types' -export default defineDirective({ - lex(comment: string) { +export function resolveConditional(test: string, env = process.env) { + test = test || 'true' + test = test.trim() + test = test.replace(/([^=!])=([^=])/g, '$1==$2') + // eslint-disable-next-line no-new-func + const evaluateCondition = new Function('env', `with (env){ return ( ${test} ) }`) + + try { + return evaluateCondition(env) === 'false' ? false : !!evaluateCondition(env) + } + catch (error) { + if (error instanceof ReferenceError) { + const match = /(\w*?) is not defined/g.exec(error.message) + if (match && match[1]) { + const name = match[1] + // @ts-expect-error ignore + env[name] = false + return resolveConditional(test, env) + } + } + return false + } +} + +export const ifDirective = defineDirective({ + lex(comment) { const match = comment.match(/#(if|else|elif|endif)\s*(.*)/) if (match) { return { @@ -40,4 +64,40 @@ export default defineDirective({ return node } }, + transform(node) { + if (node.type === 'IfStatement') { + if (resolveConditional(node.test)) { + return { + type: 'Program', + body: node.consequent.map(this.walk.bind(this)).filter(n => n != null) + }; + } else if (node.alternate) { + return { + type: 'Program', + body: node.alternate.map(this.walk.bind(this)).filter(n => n != null) + }; + } + } + }, + generate(node) { + if (node.type === 'IfStatement') { + let code = '' + if (node.kind === 'else') + code = '// #else' + + else + code = `// #${node.kind} ${node.test}` + + const consequentCode = node.consequent.map(this.walk.bind(this)).join('\n') + code += `\n${consequentCode}` + if (node.alternate.length) { + const alternateCode = node.alternate.map(this.walk.bind(this)).join('\n') + code += `\n${alternateCode}` + } + else { + code += '\n// #endif' + } + return code + } + } }) diff --git a/src/core/directives/index.ts b/src/core/directives/index.ts index e487483..3fd6bd6 100644 --- a/src/core/directives/index.ts +++ b/src/core/directives/index.ts @@ -1 +1 @@ -export * as IfDirective from './if' +export * from './if' diff --git a/src/core/types/directive.ts b/src/core/types/directive.ts index 818941f..1bb643d 100644 --- a/src/core/types/directive.ts +++ b/src/core/types/directive.ts @@ -1,6 +1,9 @@ import { Context } from "../context" import { Lexer } from "../context/lexer" import { Parser } from "../context/parser" +import { Transformer } from "../context/transformer" +import { Generator } from "../context/generator" +import { ProgramNode } from "./node" export interface SimpleToken { type: string @@ -15,11 +18,15 @@ export interface SimpleNode { export type Lex = (this: Lexer, currentLine: string) => (T | void) export type Parse = (this: Parser, currentToken: T) => (N | void) +export type Transform = (this: Transformer, currentNode: N) => (ResultN | void) +export type Generate = (this: Generator, ast: SimpleNode) => (string | void) export interface ObjectDirective { enforce?: 'pre' | 'post' lex: Lex parse: Parse + transform: Transform + generate: Generate } export interface FunctionDirective { diff --git a/src/core/unplugin.ts b/src/core/unplugin.ts index c4912c5..657d617 100644 --- a/src/core/unplugin.ts +++ b/src/core/unplugin.ts @@ -2,15 +2,25 @@ import type { UnpluginFactory } from 'unplugin' import { createUnplugin } from 'unplugin' import type { UserOptions } from '../types' import { Context } from './context' +import { ifDirective } from './directives' export const unpluginFactory: UnpluginFactory = ( options, ) => { - const ctx = new Context(options) + // @ts-expect-error ignore + const ctx = new Context({ ...options, directives: [ifDirective, ...options?.directives ?? []] }) return { name: 'unplugin-preprocessor-directives', enforce: 'pre', - + transform: (code, id) => ctx.transform(code, id), + transformInclude(id) { + return ctx.filter(id) + }, + vite: { + configResolved(config) { + ctx.env = { ...ctx.env, ...config.env } + }, + }, } } From ed95daca0dcd3059e276b58cd4c94b55833dc2ff Mon Sep 17 00:00:00 2001 From: KeJunMao Date: Sat, 20 Jan 2024 17:21:45 +0800 Subject: [PATCH 05/19] feat: support vite env --- src/core/directives/if.ts | 130 +++++++++++++++++++------------------- 1 file changed, 66 insertions(+), 64 deletions(-) diff --git a/src/core/directives/if.ts b/src/core/directives/if.ts index 38e0abe..2c54ff5 100644 --- a/src/core/directives/if.ts +++ b/src/core/directives/if.ts @@ -25,79 +25,81 @@ export function resolveConditional(test: string, env = process.env) { } } -export const ifDirective = defineDirective({ - lex(comment) { - const match = comment.match(/#(if|else|elif|endif)\s*(.*)/) - if (match) { - return { - type: match[1], - value: match[2]?.trim(), - } as IfToken - } - }, - parse(token) { - if (token.type === 'if' || token.type === 'elif' || token.type === 'else') { - const node: IfStatement = { - type: 'IfStatement', - test: token.value, - consequent: [], - alternate: [], - kind: token.type, +export const ifDirective = defineDirective((context) => { + return { + lex(comment) { + const match = comment.match(/#(if|else|elif|endif)\s*(.*)/) + if (match) { + return { + type: match[1], + value: match[2]?.trim(), + } as IfToken } - this.current++ + }, + parse(token) { + if (token.type === 'if' || token.type === 'elif' || token.type === 'else') { + const node: IfStatement = { + type: 'IfStatement', + test: token.value, + consequent: [], + alternate: [], + kind: token.type, + } + this.current++ - while (this.current < this.tokens.length) { - const nextToken = this.tokens[this.current] + while (this.current < this.tokens.length) { + const nextToken = this.tokens[this.current] - if (nextToken.type === 'elif' || nextToken.type === 'else') { - node.alternate.push(this.walk()) - break - } - else if (nextToken.type === 'endif') { - this.current++ // Skip 'endif' - break - } - else { - node.consequent.push(this.walk()) + if (nextToken.type === 'elif' || nextToken.type === 'else') { + node.alternate.push(this.walk()) + break + } + else if (nextToken.type === 'endif') { + this.current++ // Skip 'endif' + break + } + else { + node.consequent.push(this.walk()) + } } + return node } - return node - } - }, - transform(node) { - if (node.type === 'IfStatement') { - if (resolveConditional(node.test)) { - return { - type: 'Program', - body: node.consequent.map(this.walk.bind(this)).filter(n => n != null) - }; - } else if (node.alternate) { - return { - type: 'Program', - body: node.alternate.map(this.walk.bind(this)).filter(n => n != null) - }; + }, + transform(node) { + if (node.type === 'IfStatement') { + if (resolveConditional(node.test, context.env)) { + return { + type: 'Program', + body: node.consequent.map(this.walk.bind(this)).filter(n => n != null) + }; + } else if (node.alternate) { + return { + type: 'Program', + body: node.alternate.map(this.walk.bind(this)).filter(n => n != null) + }; + } } - } - }, - generate(node) { - if (node.type === 'IfStatement') { - let code = '' - if (node.kind === 'else') - code = '// #else' + }, + generate(node) { + if (node.type === 'IfStatement') { + let code = '' + if (node.kind === 'else') + code = '// #else' - else - code = `// #${node.kind} ${node.test}` + else + code = `// #${node.kind} ${node.test}` - const consequentCode = node.consequent.map(this.walk.bind(this)).join('\n') - code += `\n${consequentCode}` - if (node.alternate.length) { - const alternateCode = node.alternate.map(this.walk.bind(this)).join('\n') - code += `\n${alternateCode}` - } - else { - code += '\n// #endif' + const consequentCode = node.consequent.map(this.walk.bind(this)).join('\n') + code += `\n${consequentCode}` + if (node.alternate.length) { + const alternateCode = node.alternate.map(this.walk.bind(this)).join('\n') + code += `\n${alternateCode}` + } + else { + code += '\n// #endif' + } + return code } - return code } } }) From 7a4c6049e6a5c21aa3e2630b61aa2fbfbc7b3492 Mon Sep 17 00:00:00 2001 From: KeJunMao Date: Sat, 20 Jan 2024 17:38:10 +0800 Subject: [PATCH 06/19] feat: support loadEnv and logger --- src/core/context/index.ts | 16 +++++++++++++++- src/core/unplugin.ts | 8 ++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/core/context/index.ts b/src/core/context/index.ts index ededd29..82868d2 100644 --- a/src/core/context/index.ts +++ b/src/core/context/index.ts @@ -1,10 +1,11 @@ -import { createFilter } from 'vite' +import { createFilter, createLogger, loadEnv } from 'vite' import { UserOptions } from '../../types' import { Lex, ObjectDirective, Parse, Transform } from '../types' import { Generator } from './generator' import { Lexer } from './lexer' import { Parser } from './parser' import { Transformer } from './transformer' +import { Logger } from 'vite' export * from './lexer' export * from './parser' @@ -46,6 +47,7 @@ export class Context { transforms: Transform[] filter: (id: string) => boolean env: Record = process.env + logger: Logger constructor(options?: UserOptions) { this.options = resolveOptions(options) this.directives = sortUserDirectives(this.options.directives.map(d => typeof d === 'function' ? d(this) : d)).flat() @@ -53,6 +55,18 @@ export class Context { this.parsers = this.directives.map(d => d.parse) this.transforms = this.directives.map(d => d.transform) this.filter = createFilter(this.options.include, this.options.exclude) + this.logger = createLogger(undefined, { + prefix: 'unplugin-preprocessor-directives', + }) + this.env = this.loadEnv() + } + + loadEnv(mode = process.env.NODE_ENV || 'development') { + return loadEnv( + mode, + this.options.cwd, + '', + ) } transform(code: string, id: string) { diff --git a/src/core/unplugin.ts b/src/core/unplugin.ts index 657d617..c48a870 100644 --- a/src/core/unplugin.ts +++ b/src/core/unplugin.ts @@ -3,12 +3,13 @@ import { createUnplugin } from 'unplugin' import type { UserOptions } from '../types' import { Context } from './context' import { ifDirective } from './directives' +import { defineAndUndefDirective } from './directives' export const unpluginFactory: UnpluginFactory = ( options, ) => { // @ts-expect-error ignore - const ctx = new Context({ ...options, directives: [ifDirective, ...options?.directives ?? []] }) + const ctx = new Context({ ...options, directives: [ifDirective, defineAndUndefDirective, ...options?.directives ?? []] }) return { name: 'unplugin-preprocessor-directives', enforce: 'pre', @@ -18,7 +19,10 @@ export const unpluginFactory: UnpluginFactory = ( }, vite: { configResolved(config) { - ctx.env = { ...ctx.env, ...config.env } + ctx.env = { + ...ctx.loadEnv(config.mode), + ...config.env + } }, }, } From dd499c316dff998cdeff802967e589aa48f3a6b1 Mon Sep 17 00:00:00 2001 From: KeJunMao Date: Sat, 20 Jan 2024 18:10:22 +0800 Subject: [PATCH 07/19] feat: support define and message --- playground/main.ts | 10 ++++----- src/core/context/generator.ts | 2 +- src/core/context/index.ts | 8 +++++-- src/core/context/parser.ts | 7 +++--- src/core/context/transformer.ts | 2 +- src/core/directives/define.ts | 39 +++++++++++++++++++++++++++++++++ src/core/directives/if.ts | 9 ++------ src/core/directives/index.ts | 2 ++ src/core/directives/message.ts | 39 +++++++++++++++++++++++++++++++++ src/core/index.ts | 1 + src/core/types/node.ts | 13 ++++++++++- src/core/types/token.ts | 9 ++++++++ src/core/unplugin.ts | 5 ++--- src/core/utils.ts | 16 ++++++++++++++ 14 files changed, 139 insertions(+), 23 deletions(-) create mode 100644 src/core/directives/define.ts create mode 100644 src/core/directives/message.ts create mode 100644 src/core/utils.ts diff --git a/playground/main.ts b/playground/main.ts index 4e025ff..e590bbb 100644 --- a/playground/main.ts +++ b/playground/main.ts @@ -2,17 +2,17 @@ /* eslint-disable @typescript-eslint/indent */ /* prettier-ignore */ document.getElementById('app')!.innerHTML = '__UNPLUGIN__' - +// #undef DEV // #error this is an error message // #warning this is a warning message // #info this is an info message console.log(1) // #if DEV - console.log(2) - // #if ASD != '233' - console.log(3) - // #endif +console.log(2) +// #if ASD != '233' +console.log(3) +// #endif console.log(4) // #elif NODE_ENV == 'development' console.log(5) diff --git a/src/core/context/generator.ts b/src/core/context/generator.ts index 9060add..95c1699 100644 --- a/src/core/context/generator.ts +++ b/src/core/context/generator.ts @@ -17,7 +17,7 @@ export class Generator { if (generated) return generated } - throw new Error(`Unknown node type: ${node.type}`); + throw new Error(`Generator: Unknown node type: ${node.type}`); } private generate(): string { diff --git a/src/core/context/index.ts b/src/core/context/index.ts index 82868d2..3c462eb 100644 --- a/src/core/context/index.ts +++ b/src/core/context/index.ts @@ -1,6 +1,6 @@ import { createFilter, createLogger, loadEnv } from 'vite' import { UserOptions } from '../../types' -import { Lex, ObjectDirective, Parse, Transform } from '../types' +import { Generate, Lex, ObjectDirective, Parse, Transform } from '../types' import { Generator } from './generator' import { Lexer } from './lexer' import { Parser } from './parser' @@ -45,15 +45,19 @@ export class Context { lexers: Lex[] parsers: Parse[] transforms: Transform[] + generates: Generate[] filter: (id: string) => boolean env: Record = process.env logger: Logger constructor(options?: UserOptions) { this.options = resolveOptions(options) this.directives = sortUserDirectives(this.options.directives.map(d => typeof d === 'function' ? d(this) : d)).flat() + this.lexers = this.directives.map(d => d.lex) this.parsers = this.directives.map(d => d.parse) this.transforms = this.directives.map(d => d.transform) + this.generates = this.directives.map(d => d.generate) + this.filter = createFilter(this.options.include, this.options.exclude) this.logger = createLogger(undefined, { prefix: 'unplugin-preprocessor-directives', @@ -75,7 +79,7 @@ export class Context { const transformed = Transformer.transform(ast, this.transforms) if (transformed) { - const generated = Generator.generate(transformed) + const generated = Generator.generate(transformed, this.generates) return generated } } diff --git a/src/core/context/parser.ts b/src/core/context/parser.ts index 88a36c6..bcf941b 100644 --- a/src/core/context/parser.ts +++ b/src/core/context/parser.ts @@ -1,7 +1,8 @@ -import { CodeStatement, Parse, ProgramNode, SimpleToken } from '../types' +import { CodeStatement, Parse, SimpleToken } from '../types' +import { createProgramNode } from '../utils' export class Parser { - ast: ProgramNode = { type: 'Program', body: [] } + ast = createProgramNode() current = 0 constructor(public tokens: SimpleToken[], public parsers: Parse[] = []) { } @@ -21,7 +22,7 @@ export class Parser { } } - throw new Error(`Unknown token type: ${token.type}`) + throw new Error(`Parser: Unknown token type: ${token.type}`) } private parse() { diff --git a/src/core/context/transformer.ts b/src/core/context/transformer.ts index f583f80..31b4ef8 100644 --- a/src/core/context/transformer.ts +++ b/src/core/context/transformer.ts @@ -21,7 +21,7 @@ export class Transformer { if (transformed) return transformed } - throw new Error(`Unknown node type: ${node.type}`); + throw new Error(`Transformer: Unknown node type: ${node.type}`); } private transform(): SimpleNode | void { diff --git a/src/core/directives/define.ts b/src/core/directives/define.ts new file mode 100644 index 0000000..38ce673 --- /dev/null +++ b/src/core/directives/define.ts @@ -0,0 +1,39 @@ +import { DefineStatement, DefineToken, defineDirective } from ".."; +import { createProgramNode, simpleMatchToken } from "../utils"; + +export const theDefineDirective = defineDirective((context) => ({ + lex(comment) { + return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) + }, + parse(token) { + if (token.type === 'define' || token.type === 'undef') { + this.current++ + return { + type: 'DefineStatement', + kind: token.type, + name: token.value, + } + } + }, + transform(node) { + if (node.type === 'DefineStatement') { + if (node.kind === 'define') { + context.env[node.name] = true + } + else if (node.kind === 'undef') { + context.env[node.name] = false + } + return createProgramNode() + } + }, + generate(node) { + if (node.type === 'DefineStatement') { + if (node.kind === 'define') { + return `#${node.kind} ${node.name}` + } + else if (node.kind === 'undef') { + return `#${node.kind} ${node.name}` + } + } + } +})) diff --git a/src/core/directives/if.ts b/src/core/directives/if.ts index 2c54ff5..81eeec9 100644 --- a/src/core/directives/if.ts +++ b/src/core/directives/if.ts @@ -1,5 +1,6 @@ import { defineDirective } from '../directive' import { IfStatement, IfToken } from '../types' +import { simpleMatchToken } from '../utils' export function resolveConditional(test: string, env = process.env) { test = test || 'true' @@ -28,13 +29,7 @@ export function resolveConditional(test: string, env = process.env) { export const ifDirective = defineDirective((context) => { return { lex(comment) { - const match = comment.match(/#(if|else|elif|endif)\s*(.*)/) - if (match) { - return { - type: match[1], - value: match[2]?.trim(), - } as IfToken - } + return simpleMatchToken(comment, /#(if|else|elif|endif)\s*(.*)/) }, parse(token) { if (token.type === 'if' || token.type === 'elif' || token.type === 'else') { diff --git a/src/core/directives/index.ts b/src/core/directives/index.ts index 3fd6bd6..80382f3 100644 --- a/src/core/directives/index.ts +++ b/src/core/directives/index.ts @@ -1 +1,3 @@ export * from './if' +export * from './define' +export * from './message' diff --git a/src/core/directives/message.ts b/src/core/directives/message.ts new file mode 100644 index 0000000..a687ad8 --- /dev/null +++ b/src/core/directives/message.ts @@ -0,0 +1,39 @@ +import { MessageStatement, MessageToken, defineDirective } from ".."; +import { createProgramNode, simpleMatchToken } from "../utils"; + +export const MessageDirective = defineDirective((context) => ({ + lex(comment) { + return simpleMatchToken(comment, /#(error|warning|info)\s*(.*)/) + }, + parse(token) { + if (token.type === 'error' || token.type === 'warning' || token.type === 'info') { + this.current++ + return { + type: 'MessageStatement', + kind: token.type, + value: token.value, + } + } + }, + transform(node) { + if (node.type === 'MessageStatement') { + switch (node.kind) { + case 'error': + context.logger.error(node.value, { timestamp: true }) + break; + case 'warning': + context.logger.warn(node.value, { timestamp: true }) + break; + case 'info': + context.logger.info(node.value, { timestamp: true }) + break; + } + return createProgramNode() + } + }, + generate(node) { + if (node.type === 'MessageStatement') { + return `#${node.kind} ${node.value}` + } + } +})) diff --git a/src/core/index.ts b/src/core/index.ts index 3f48d79..d769355 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -3,3 +3,4 @@ export * from './context' export * from './directives' export * from './directive' export * from './types' +export * from './utils' diff --git a/src/core/types/node.ts b/src/core/types/node.ts index 6b31e43..cc1f8bd 100644 --- a/src/core/types/node.ts +++ b/src/core/types/node.ts @@ -10,7 +10,6 @@ export interface CodeStatement extends SimpleNode { value: string } - export interface IfStatement extends SimpleNode { type: 'IfStatement', test: string, @@ -18,3 +17,15 @@ export interface IfStatement extends SimpleNode { alternate: SimpleNode[], kind: IfToken['type'] } + +export interface DefineStatement extends SimpleNode { + type: 'DefineStatement', + kind: 'define' | 'undef', + name: string +} + +export interface MessageStatement extends SimpleNode { + type: 'MessageStatement', + kind: 'error' | 'warning' | 'info', + value: string +} diff --git a/src/core/types/token.ts b/src/core/types/token.ts index 09a8530..de3e2a0 100644 --- a/src/core/types/token.ts +++ b/src/core/types/token.ts @@ -8,3 +8,12 @@ export interface IfToken extends SimpleToken { type: 'if' | 'else' | 'elif' | 'endif' value: string } +export interface DefineToken extends SimpleToken { + type: 'define' | 'undef' + value: string +} + +export interface MessageToken extends SimpleToken { + type: 'error' | 'warning' | 'info' + value: string +} diff --git a/src/core/unplugin.ts b/src/core/unplugin.ts index c48a870..1199e4d 100644 --- a/src/core/unplugin.ts +++ b/src/core/unplugin.ts @@ -2,14 +2,13 @@ import type { UnpluginFactory } from 'unplugin' import { createUnplugin } from 'unplugin' import type { UserOptions } from '../types' import { Context } from './context' -import { ifDirective } from './directives' -import { defineAndUndefDirective } from './directives' +import { ifDirective, theDefineDirective, MessageDirective } from './directives' export const unpluginFactory: UnpluginFactory = ( options, ) => { // @ts-expect-error ignore - const ctx = new Context({ ...options, directives: [ifDirective, defineAndUndefDirective, ...options?.directives ?? []] }) + const ctx = new Context({ ...options, directives: [ifDirective, theDefineDirective, MessageDirective, ...options?.directives ?? []] }) return { name: 'unplugin-preprocessor-directives', enforce: 'pre', diff --git a/src/core/utils.ts b/src/core/utils.ts new file mode 100644 index 0000000..ac02fcb --- /dev/null +++ b/src/core/utils.ts @@ -0,0 +1,16 @@ +import { SimpleToken, SimpleNode, ProgramNode } from "./types" + +export function simpleMatchToken(comment: string, regex: RegExp) { + const match = comment.match(regex) + if (match) { + return { + type: match[1], + value: match[2]?.trim(), + } as T + } +} + +export const createProgramNode = (body: SimpleNode[] = []) => ({ + type: 'Program', + body, +} as ProgramNode) From 3644caea67527845d377fc31262c5939cc39d515 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 08:59:46 +0800 Subject: [PATCH 08/19] docs: update readme --- README.md | 70 +++++++++++++++++++++++------------------------ README.zh-cn.md | 72 +++++++++++++++++++++++-------------------------- 2 files changed, 66 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index 6721654..6bed15d 100644 --- a/README.md +++ b/README.md @@ -146,9 +146,6 @@ console.log('Verbose output version') // #endif ``` -> [!WARNING] -> `#define` and `#undef` are Hoisting, like `var` in JavaScript. - ### Conditional compilation - `#if`: Opens a conditional compilation, where code is compiled only if the specified symbol is defined and evaluated to true. @@ -204,34 +201,44 @@ You can used `defineDirective` to define your own directive. Taking the built-in directive as an example: ```ts -/** @see https://xregexp.com/ */ -import type { NamedGroupsArray } from 'xregexp' -import { defineDirective } from '../directive' - -export default defineDirective(() => ({ - nested: false, - name: '#define', - pattern: /.*?#(?(?:un)?def(?:ine)?)\s*(?[\w]*)\s/gm, - processor({ ctx }) { - return (...args) => { - const group = args[args.length - 1] as NamedGroupsArray - if (group.directive === 'define') - // @ts-expect-error ignore - ctx.env[group.key] = true - - else if (group.directive === 'undef') - delete ctx.env[group.key] - - return '' +export default defineDirective((context) => ({ + lex(comment) { + return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) + }, + parse(token) { + if (token.type === 'define' || token.type === 'undef') { + this.current++ + return { + type: 'DefineStatement', + kind: token.type, + name: token.value, + } + } + }, + transform(node) { + if (node.type === 'DefineStatement') { + if (node.kind === 'define') { + context.env[node.name] = true + } + else if (node.kind === 'undef') { + context.env[node.name] = false + } + return createProgramNode() } }, + generate(node) { + if (node.type === 'DefineStatement') { + if (node.kind === 'define') { + return `#${node.kind} ${node.name}` + } + else if (node.kind === 'undef') { + return `#${node.kind} ${node.name}` + } + } + } })) ``` -### `name: string` - -directive name, used to identify the directive in warning and error messages - ### `enforce: 'pre' | 'post'` Execution priority of directives @@ -239,17 +246,6 @@ Execution priority of directives - `pre`: Execute as early as possible - `post`: Execute as late as possible -### `nested: boolean` - -Is it a nested instruction, The default is `false`. If it is `true`, `matchRecursive` will be used internally for replace and recursive calls. Otherwise, `replace` will be used` - -### `pattern` - -The regular expression of the directive, if it is a nested instruction, needs to specify the `start` and `end` regular expressions -### `processor` - -The processing function of the directive. - [npm-version-src]: https://img.shields.io/npm/v/unplugin-preprocessor-directives?style=flat&colorA=18181B&colorB=F0DB4F [npm-version-href]: https://npmjs.com/package/unplugin-preprocessor-directives [npm-downloads-src]: https://img.shields.io/npm/dm/unplugin-preprocessor-directives?style=flat&colorA=18181B&colorB=F0DB4F diff --git a/README.zh-cn.md b/README.zh-cn.md index fd0cead..e84df28 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -146,9 +146,6 @@ console.log('Verbose output version') // #endif ``` -> [!WARNING] -> `#define` 和 `#undef` 是提升的,类似 JavaScript 的 `var`。 - ### 条件编译 - `#if`: 打开条件编译,只有当指定的 symbol 被定义并求值为 true 时,代码才会被编译。 @@ -205,34 +202,44 @@ class MyClass { 以内置指令为例: ```ts -/** @see https://xregexp.com/ */ -import type { NamedGroupsArray } from 'xregexp' -import { defineDirective } from '../directive' - -export default defineDirective(() => ({ - nested: false, - name: '#define', - pattern: /.*?#(?(?:un)?def(?:ine)?)\s*(?[\w]*)\s/gm, - processor({ ctx }) { - return (...args) => { - const group = args[args.length - 1] as NamedGroupsArray - if (group.directive === 'define') - // @ts-expect-error ignore - ctx.env[group.key] = true - - else if (group.directive === 'undef') - delete ctx.env[group.key] - - return '' +export default defineDirective((context) => ({ + lex(comment) { + return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) + }, + parse(token) { + if (token.type === 'define' || token.type === 'undef') { + this.current++ + return { + type: 'DefineStatement', + kind: token.type, + name: token.value, + } + } + }, + transform(node) { + if (node.type === 'DefineStatement') { + if (node.kind === 'define') { + context.env[node.name] = true + } + else if (node.kind === 'undef') { + context.env[node.name] = false + } + return createProgramNode() } }, + generate(node) { + if (node.type === 'DefineStatement') { + if (node.kind === 'define') { + return `#${node.kind} ${node.name}` + } + else if (node.kind === 'undef') { + return `#${node.kind} ${node.name}` + } + } + } })) ``` -### `name: string` - -指令的名称,用于在警告和错误消息中标识指令。 - ### `enforce: 'pre' | 'post'` 指令的执行优先级 @@ -240,19 +247,6 @@ export default defineDirective(() => ({ - `pre` 尽可能早执行 - `post` 尽可能晚执行 -### `nested: boolean` - -是否为嵌套指令,默认为 `false`,如果为 `true` 在内部将使用 `matchRecursive` 进行 `replace` 并递归调用, 否则使用 `replace` - -### `pattern` - -指令的正则表达式,如果是嵌套指令,需要指定开始和结束的正则表达式 - -### `processor` - -指令的处理函数。 - - [npm-version-src]: https://img.shields.io/npm/v/unplugin-preprocessor-directives?style=flat&colorA=18181B&colorB=F0DB4F [npm-version-href]: https://npmjs.com/package/unplugin-preprocessor-directives [npm-downloads-src]: https://img.shields.io/npm/dm/unplugin-preprocessor-directives?style=flat&colorA=18181B&colorB=F0DB4F From 37149000d44ea46e017a946b6bfe62f907f99770 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 17:05:06 +0800 Subject: [PATCH 09/19] test: add parser test --- src/core/directives/define.ts | 3 ++- src/core/directives/message.ts | 3 ++- test/parser.test.ts | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/parser.test.ts diff --git a/src/core/directives/define.ts b/src/core/directives/define.ts index 38ce673..2358a16 100644 --- a/src/core/directives/define.ts +++ b/src/core/directives/define.ts @@ -1,4 +1,5 @@ -import { DefineStatement, DefineToken, defineDirective } from ".."; +import { defineDirective } from "../directive"; +import { DefineStatement, DefineToken } from "../types"; import { createProgramNode, simpleMatchToken } from "../utils"; export const theDefineDirective = defineDirective((context) => ({ diff --git a/src/core/directives/message.ts b/src/core/directives/message.ts index a687ad8..231bc9b 100644 --- a/src/core/directives/message.ts +++ b/src/core/directives/message.ts @@ -1,4 +1,5 @@ -import { MessageStatement, MessageToken, defineDirective } from ".."; +import { defineDirective } from "../directive"; +import { MessageToken, MessageStatement } from "../types"; import { createProgramNode, simpleMatchToken } from "../utils"; export const MessageDirective = defineDirective((context) => ({ diff --git a/test/parser.test.ts b/test/parser.test.ts new file mode 100644 index 0000000..169bde1 --- /dev/null +++ b/test/parser.test.ts @@ -0,0 +1,17 @@ +import { describe, expect, it } from 'vitest' +import { Parser } from '../src' + +describe('Parser', () => { + it('should parse code statements', () => { + const tokens = [{ type: 'code', value: 'console.log("Hello, World!")' }] + const ast = Parser.parse(tokens) + expect(ast.body).toHaveLength(1) + expect(ast.body[0].type).toBe('CodeStatement') + expect(ast.body[0].value).toBe('console.log("Hello, World!")') + }) + + it('should throw an error for unknown token type', () => { + const tokens = [{ type: 'unknown', value: 'unknown token' }] + expect(() => Parser.parse(tokens)).toThrowError('Parser: Unknown token type: unknown') + }) +}); From cfe62f5bb8c6faaba059e7e90f5b2927c9467eba Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 17:09:33 +0800 Subject: [PATCH 10/19] test: add transformer test --- test/transformer.test.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test/transformer.test.ts diff --git a/test/transformer.test.ts b/test/transformer.test.ts new file mode 100644 index 0000000..1f00ce1 --- /dev/null +++ b/test/transformer.test.ts @@ -0,0 +1,36 @@ +import { describe, expect, it } from 'vitest' +import { Transformer } from '../src/core/context/transformer'; +import { ProgramNode, createProgramNode } from '../src'; + +describe('Transformer', () => { + it('should transform the program correctly', () => { + const program = createProgramNode([ + { + type: 'CodeStatement', + code: 'console.log("Hello, world!");' + } + ]) + const transformedProgram = Transformer.transform(program); + + // Assert the transformed program + expect(transformedProgram).toEqual({ + type: 'Program', + body: [ + { + type: 'CodeStatement', + code: 'console.log("Hello, world!");' + } + ] + }); + }); + + it('should throw an error for unknown node type', () => { + const program = { + type: 'UnknownNodeType', + body: [] + } as unknown as ProgramNode + expect(() => { + Transformer.transform(program); + }).toThrowError('Transformer: Unknown node type: UnknownNodeType'); + }); +}); From 5617cfef2725b333775f2a594e9ad256919f3467 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 17:29:26 +0800 Subject: [PATCH 11/19] chore: lint code --- .eslintignore | 1 - .eslintrc | 3 -- .vscode/settings.json | 68 ++++++++++++++++++++++++- README.md | 18 +++---- README.zh-cn.md | 18 +++---- eslint.config.js | 3 ++ examples/vite-vue-ts/tsconfig.json | 33 ++++++++---- examples/vite-vue-ts/tsconfig.node.json | 4 +- package.json | 14 ++--- playground/main.ts | 2 +- src/core/context/generator.ts | 7 +-- src/core/context/index.ts | 10 ++-- src/core/context/lexer.ts | 7 ++- src/core/context/parser.ts | 7 ++- src/core/context/transformer.ts | 14 ++--- src/core/directive.ts | 2 +- src/core/directives/define.ts | 25 +++++---- src/core/directives/if.ts | 16 +++--- src/core/directives/message.ts | 19 ++++--- src/core/types/directive.ts | 11 ++-- src/core/types/index.ts | 6 +-- src/core/types/node.ts | 18 +++---- src/core/types/token.ts | 2 +- src/core/unplugin.ts | 4 +- src/core/utils.ts | 12 +++-- src/types.ts | 2 +- test/lexer.test.ts | 24 ++++----- test/parser.test.ts | 4 +- test/transformer.test.ts | 33 ++++++------ tsconfig.json | 6 +-- 30 files changed, 236 insertions(+), 157 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc create mode 100644 eslint.config.js diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 5926170..0000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -test/fixtures/* diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 09c2e42..0000000 --- a/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@antfu" -} diff --git a/.vscode/settings.json b/.vscode/settings.json index 50aead7..abd048b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,69 @@ { - "prettier.enable": false + // Enable the ESlint flat config support + "eslint.experimental.useFlatConfig": true, + // Disable the default formatter, use eslint instead + "prettier.enable": false, + "editor.formatOnSave": false, + // Auto fix + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + // Silent the stylistic rules in you IDE, but still auto fix them + "eslint.rules.customizations": [ + { + "rule": "style/*", + "severity": "off" + }, + { + "rule": "format/*", + "severity": "off" + }, + { + "rule": "*-indent", + "severity": "off" + }, + { + "rule": "*-spacing", + "severity": "off" + }, + { + "rule": "*-spaces", + "severity": "off" + }, + { + "rule": "*-order", + "severity": "off" + }, + { + "rule": "*-dangle", + "severity": "off" + }, + { + "rule": "*-newline", + "severity": "off" + }, + { + "rule": "*quotes", + "severity": "off" + }, + { + "rule": "*semi", + "severity": "off" + } + ], + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml" + ] } diff --git a/README.md b/README.md index 6bed15d..08b65e1 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,6 @@ export default {
-
Webpack
@@ -201,7 +200,7 @@ You can used `defineDirective` to define your own directive. Taking the built-in directive as an example: ```ts -export default defineDirective((context) => ({ +export default defineDirective(context => ({ lex(comment) { return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) }, @@ -217,23 +216,22 @@ export default defineDirective((context) => ({ }, transform(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') { + if (node.kind === 'define') context.env[node.name] = true - } - else if (node.kind === 'undef') { + + else if (node.kind === 'undef') context.env[node.name] = false - } + return createProgramNode() } }, generate(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') { + if (node.kind === 'define') return `#${node.kind} ${node.name}` - } - else if (node.kind === 'undef') { + + else if (node.kind === 'undef') return `#${node.kind} ${node.name}` - } } } })) diff --git a/README.zh-cn.md b/README.zh-cn.md index e84df28..e7e4ce7 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -50,7 +50,6 @@ export default {
-
Webpack
@@ -202,7 +201,7 @@ class MyClass { 以内置指令为例: ```ts -export default defineDirective((context) => ({ +export default defineDirective(context => ({ lex(comment) { return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) }, @@ -218,23 +217,22 @@ export default defineDirective((context) => ({ }, transform(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') { + if (node.kind === 'define') context.env[node.name] = true - } - else if (node.kind === 'undef') { + + else if (node.kind === 'undef') context.env[node.name] = false - } + return createProgramNode() } }, generate(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') { + if (node.kind === 'define') return `#${node.kind} ${node.name}` - } - else if (node.kind === 'undef') { + + else if (node.kind === 'undef') return `#${node.kind} ${node.name}` - } } } })) diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..6a1a5cb --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,3 @@ +import antfu from '@antfu/eslint-config' + +export default antfu() diff --git a/examples/vite-vue-ts/tsconfig.json b/examples/vite-vue-ts/tsconfig.json index f82888f..bc0dad8 100644 --- a/examples/vite-vue-ts/tsconfig.json +++ b/examples/vite-vue-ts/tsconfig.json @@ -1,25 +1,36 @@ { "compilerOptions": { "target": "ES2020", + "jsx": "preserve", + "lib": [ + "ES2020", + "DOM", + "DOM.Iterable" + ], "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - /* Bundler mode */ "moduleResolution": "bundler", - "allowImportingTsExtensions": true, "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "preserve", - + "allowImportingTsExtensions": true, /* Linting */ "strict": true, + "noFallthroughCasesInSwitch": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "noEmit": true, + "isolatedModules": true, + "skipLibCheck": true }, - "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], - "references": [{ "path": "./tsconfig.node.json" }] + "references": [ + { + "path": "./tsconfig.node.json" + } + ], + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue" + ] } diff --git a/examples/vite-vue-ts/tsconfig.node.json b/examples/vite-vue-ts/tsconfig.node.json index 42872c5..dde0894 100644 --- a/examples/vite-vue-ts/tsconfig.node.json +++ b/examples/vite-vue-ts/tsconfig.node.json @@ -1,10 +1,10 @@ { "compilerOptions": { "composite": true, - "skipLibCheck": true, "module": "ESNext", "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "skipLibCheck": true }, "include": ["vite.config.ts"] } diff --git a/package.json b/package.json index 8a03ef2..83de644 100644 --- a/package.json +++ b/package.json @@ -147,13 +147,10 @@ "webpack": "^4 || ^5" }, "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "rollup": { + "@nuxt/kit": { "optional": true }, - "vite": { + "@nuxt/schema": { "optional": true }, "@rspack/core": { @@ -162,10 +159,13 @@ "esbuild": { "optional": true }, - "@nuxt/kit": { + "rollup": { "optional": true }, - "@nuxt/schema": { + "vite": { + "optional": true + }, + "webpack": { "optional": true } }, diff --git a/playground/main.ts b/playground/main.ts index e590bbb..35e963c 100644 --- a/playground/main.ts +++ b/playground/main.ts @@ -1,5 +1,5 @@ /* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/indent */ +// eslint-disable @typescript-eslint/indent /* prettier-ignore */ document.getElementById('app')!.innerHTML = '__UNPLUGIN__' // #undef DEV diff --git a/src/core/context/generator.ts b/src/core/context/generator.ts index 95c1699..d5301e6 100644 --- a/src/core/context/generator.ts +++ b/src/core/context/generator.ts @@ -1,4 +1,4 @@ -import { Generate, SimpleNode } from "../types"; +import type { Generate, SimpleNode } from '../types' export class Generator { constructor(public node: SimpleNode, public generates: Generate[] = []) { @@ -14,10 +14,11 @@ export class Generator { for (const generate of this.generates) { const generated = generate.call(this, node) - if (generated) return generated + if (generated) + return generated } - throw new Error(`Generator: Unknown node type: ${node.type}`); + throw new Error(`Generator: Unknown node type: ${node.type}`) } private generate(): string { diff --git a/src/core/context/index.ts b/src/core/context/index.ts index 3c462eb..aa3762e 100644 --- a/src/core/context/index.ts +++ b/src/core/context/index.ts @@ -1,11 +1,13 @@ +import process from 'node:process' +import type { Logger } from 'vite' import { createFilter, createLogger, loadEnv } from 'vite' -import { UserOptions } from '../../types' -import { Generate, Lex, ObjectDirective, Parse, Transform } from '../types' +import type { UserOptions } from '../../types' +import type { Generate, Lex, ObjectDirective, Parse, Transform } from '../types' import { Generator } from './generator' import { Lexer } from './lexer' import { Parser } from './parser' import { Transformer } from './transformer' -import { Logger } from 'vite' + export * from './lexer' export * from './parser' @@ -73,7 +75,7 @@ export class Context { ) } - transform(code: string, id: string) { + transform(code: string, _id: string) { const tokens = Lexer.lex(code, this.lexers) const ast = Parser.parse(tokens, this.parsers) diff --git a/src/core/context/lexer.ts b/src/core/context/lexer.ts index 91cac4d..eea0dd4 100644 --- a/src/core/context/lexer.ts +++ b/src/core/context/lexer.ts @@ -1,4 +1,7 @@ -import { CodeToken, Lex, SimpleToken } from '../types' +/* eslint-disable no-restricted-syntax */ +/* eslint-disable no-labels */ +import type { CodeToken, Lex, SimpleToken } from '../types' + export function isComment(line: string) { return ( // JS comment @@ -27,7 +30,7 @@ export class Lexer { const line = code.slice(startIndex, endIndex).trim() if (isComment(line)) { - for (let lex of this.lexers) { + for (const lex of this.lexers) { const token = lex.bind(this)(line) if (token) { this.tokens.push(token) diff --git a/src/core/context/parser.ts b/src/core/context/parser.ts index bcf941b..831c64f 100644 --- a/src/core/context/parser.ts +++ b/src/core/context/parser.ts @@ -1,4 +1,4 @@ -import { CodeStatement, Parse, SimpleToken } from '../types' +import type { CodeStatement, Parse, SimpleToken } from '../types' import { createProgramNode } from '../utils' export class Parser { @@ -15,11 +15,10 @@ export class Parser { return { type: 'CodeStatement', value: token.value } as CodeStatement } - for (let parser of this.parsers) { + for (const parser of this.parsers) { const node = parser.bind(this)(token) - if (node) { + if (node) return node - } } throw new Error(`Parser: Unknown token type: ${token.type}`) diff --git a/src/core/context/transformer.ts b/src/core/context/transformer.ts index 31b4ef8..2b83dc4 100644 --- a/src/core/context/transformer.ts +++ b/src/core/context/transformer.ts @@ -1,4 +1,4 @@ -import { ProgramNode, SimpleNode, Transform } from "../types"; +import type { ProgramNode, SimpleNode, Transform } from '../types' export class Transformer { constructor(public program: ProgramNode, public transforms: Transform[] = []) { @@ -9,19 +9,19 @@ export class Transformer { case 'Program': return { ...node, - body: node.body.map(this.walk.bind(this)).filter((n: any) => !!n) - } as ProgramNode; + body: node.body.map(this.walk.bind(this)).filter((n: any) => !!n), + } as ProgramNode case 'CodeStatement': - return node; + return node } - for (const transformer of this.transforms) { const transformed = transformer.bind(this)(node) - if (transformed) return transformed + if (transformed) + return transformed } - throw new Error(`Transformer: Unknown node type: ${node.type}`); + throw new Error(`Transformer: Unknown node type: ${node.type}`) } private transform(): SimpleNode | void { diff --git a/src/core/directive.ts b/src/core/directive.ts index d14e47e..ea933f3 100644 --- a/src/core/directive.ts +++ b/src/core/directive.ts @@ -1,4 +1,4 @@ -import { SimpleNode, SimpleToken, Directive } from "./types/index"; +import type { Directive, SimpleNode, SimpleToken } from './types/index' export function defineDirective(directive: Directive) { return directive diff --git a/src/core/directives/define.ts b/src/core/directives/define.ts index 2358a16..4ed7c5d 100644 --- a/src/core/directives/define.ts +++ b/src/core/directives/define.ts @@ -1,8 +1,8 @@ -import { defineDirective } from "../directive"; -import { DefineStatement, DefineToken } from "../types"; -import { createProgramNode, simpleMatchToken } from "../utils"; +import { defineDirective } from '../directive' +import type { DefineStatement, DefineToken } from '../types' +import { createProgramNode, simpleMatchToken } from '../utils' -export const theDefineDirective = defineDirective((context) => ({ +export const theDefineDirective = defineDirective(context => ({ lex(comment) { return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) }, @@ -18,23 +18,22 @@ export const theDefineDirective = defineDirective( }, transform(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') { + if (node.kind === 'define') context.env[node.name] = true - } - else if (node.kind === 'undef') { + + else if (node.kind === 'undef') context.env[node.name] = false - } + return createProgramNode() } }, generate(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') { + if (node.kind === 'define') return `#${node.kind} ${node.name}` - } - else if (node.kind === 'undef') { + + else if (node.kind === 'undef') return `#${node.kind} ${node.name}` - } } - } + }, })) diff --git a/src/core/directives/if.ts b/src/core/directives/if.ts index 81eeec9..c8107a2 100644 --- a/src/core/directives/if.ts +++ b/src/core/directives/if.ts @@ -1,5 +1,6 @@ +import process from 'node:process' import { defineDirective } from '../directive' -import { IfStatement, IfToken } from '../types' +import type { IfStatement, IfToken } from '../types' import { simpleMatchToken } from '../utils' export function resolveConditional(test: string, env = process.env) { @@ -65,13 +66,14 @@ export const ifDirective = defineDirective((context) => { if (resolveConditional(node.test, context.env)) { return { type: 'Program', - body: node.consequent.map(this.walk.bind(this)).filter(n => n != null) - }; - } else if (node.alternate) { + body: node.consequent.map(this.walk.bind(this)).filter(n => n != null), + } + } + else if (node.alternate) { return { type: 'Program', - body: node.alternate.map(this.walk.bind(this)).filter(n => n != null) - }; + body: node.alternate.map(this.walk.bind(this)).filter(n => n != null), + } } } }, @@ -95,6 +97,6 @@ export const ifDirective = defineDirective((context) => { } return code } - } + }, } }) diff --git a/src/core/directives/message.ts b/src/core/directives/message.ts index 231bc9b..ce4b4f0 100644 --- a/src/core/directives/message.ts +++ b/src/core/directives/message.ts @@ -1,8 +1,8 @@ -import { defineDirective } from "../directive"; -import { MessageToken, MessageStatement } from "../types"; -import { createProgramNode, simpleMatchToken } from "../utils"; +import { defineDirective } from '../directive' +import type { MessageStatement, MessageToken } from '../types' +import { createProgramNode, simpleMatchToken } from '../utils' -export const MessageDirective = defineDirective((context) => ({ +export const MessageDirective = defineDirective(context => ({ lex(comment) { return simpleMatchToken(comment, /#(error|warning|info)\s*(.*)/) }, @@ -21,20 +21,19 @@ export const MessageDirective = defineDirective( switch (node.kind) { case 'error': context.logger.error(node.value, { timestamp: true }) - break; + break case 'warning': context.logger.warn(node.value, { timestamp: true }) - break; + break case 'info': context.logger.info(node.value, { timestamp: true }) - break; + break } return createProgramNode() } }, generate(node) { - if (node.type === 'MessageStatement') { + if (node.type === 'MessageStatement') return `#${node.kind} ${node.value}` - } - } + }, })) diff --git a/src/core/types/directive.ts b/src/core/types/directive.ts index 1bb643d..1e2db71 100644 --- a/src/core/types/directive.ts +++ b/src/core/types/directive.ts @@ -1,9 +1,8 @@ -import { Context } from "../context" -import { Lexer } from "../context/lexer" -import { Parser } from "../context/parser" -import { Transformer } from "../context/transformer" -import { Generator } from "../context/generator" -import { ProgramNode } from "./node" +import type { Context } from '../context' +import type { Lexer } from '../context/lexer' +import type { Parser } from '../context/parser' +import type { Transformer } from '../context/transformer' +import type { Generator } from '../context/generator' export interface SimpleToken { type: string diff --git a/src/core/types/index.ts b/src/core/types/index.ts index 7873f0c..43af30a 100644 --- a/src/core/types/index.ts +++ b/src/core/types/index.ts @@ -1,3 +1,3 @@ -export * from "./directive" -export * from "./token" -export * from "./node" +export * from './directive' +export * from './token' +export * from './node' diff --git a/src/core/types/node.ts b/src/core/types/node.ts index cc1f8bd..a67ed6e 100644 --- a/src/core/types/node.ts +++ b/src/core/types/node.ts @@ -1,4 +1,4 @@ -import { IfToken, SimpleNode } from "."; +import type { IfToken, SimpleNode } from '.' export interface ProgramNode extends SimpleNode { type: 'Program' @@ -11,21 +11,21 @@ export interface CodeStatement extends SimpleNode { } export interface IfStatement extends SimpleNode { - type: 'IfStatement', - test: string, - consequent: SimpleNode[], - alternate: SimpleNode[], + type: 'IfStatement' + test: string + consequent: SimpleNode[] + alternate: SimpleNode[] kind: IfToken['type'] } export interface DefineStatement extends SimpleNode { - type: 'DefineStatement', - kind: 'define' | 'undef', + type: 'DefineStatement' + kind: 'define' | 'undef' name: string } export interface MessageStatement extends SimpleNode { - type: 'MessageStatement', - kind: 'error' | 'warning' | 'info', + type: 'MessageStatement' + kind: 'error' | 'warning' | 'info' value: string } diff --git a/src/core/types/token.ts b/src/core/types/token.ts index de3e2a0..d43b43b 100644 --- a/src/core/types/token.ts +++ b/src/core/types/token.ts @@ -1,4 +1,4 @@ -import { SimpleToken } from "."; +import type { SimpleToken } from '.' export interface CodeToken extends SimpleToken { type: 'code' diff --git a/src/core/unplugin.ts b/src/core/unplugin.ts index 1199e4d..a2d6cfb 100644 --- a/src/core/unplugin.ts +++ b/src/core/unplugin.ts @@ -2,7 +2,7 @@ import type { UnpluginFactory } from 'unplugin' import { createUnplugin } from 'unplugin' import type { UserOptions } from '../types' import { Context } from './context' -import { ifDirective, theDefineDirective, MessageDirective } from './directives' +import { MessageDirective, ifDirective, theDefineDirective } from './directives' export const unpluginFactory: UnpluginFactory = ( options, @@ -20,7 +20,7 @@ export const unpluginFactory: UnpluginFactory = ( configResolved(config) { ctx.env = { ...ctx.loadEnv(config.mode), - ...config.env + ...config.env, } }, }, diff --git a/src/core/utils.ts b/src/core/utils.ts index ac02fcb..451be88 100644 --- a/src/core/utils.ts +++ b/src/core/utils.ts @@ -1,4 +1,4 @@ -import { SimpleToken, SimpleNode, ProgramNode } from "./types" +import type { ProgramNode, SimpleNode, SimpleToken } from './types' export function simpleMatchToken(comment: string, regex: RegExp) { const match = comment.match(regex) @@ -10,7 +10,9 @@ export function simpleMatchToken(comment: string, regex: RegExp } } -export const createProgramNode = (body: SimpleNode[] = []) => ({ - type: 'Program', - body, -} as ProgramNode) +export function createProgramNode(body: SimpleNode[] = []) { + return { + type: 'Program', + body, + } as ProgramNode +} diff --git a/src/types.ts b/src/types.ts index 0c753b5..3c8b5a4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,5 @@ import type { FilterPattern } from 'vite' -import { Directive } from './core/types' +import type { Directive } from './core/types' export interface Options { cwd: string diff --git a/test/lexer.test.ts b/test/lexer.test.ts index 9cc202e..bdc1a64 100644 --- a/test/lexer.test.ts +++ b/test/lexer.test.ts @@ -1,36 +1,36 @@ import { describe, expect, it } from 'vitest' import { Lexer } from '../src' -describe('Lexer', () => { +describe('lexer', () => { it('should tokenize code with comments', () => { const code = ` // This is a comment const foo = 'bar'; // Another comment - const baz = 'qux';`; + const baz = 'qux';` const expectedTokens = [ { type: 'code', value: '// This is a comment' }, { type: 'code', value: 'const foo = \'bar\';' }, { type: 'code', value: '// Another comment' }, { type: 'code', value: 'const baz = \'qux\';' }, - ]; + ] - const tokens = Lexer.lex(code); + const tokens = Lexer.lex(code) - expect(tokens).toEqual(expectedTokens); - }); + expect(tokens).toEqual(expectedTokens) + }) it('should tokenize code without comments', () => { const code = ` const foo = 'bar'; - const baz = 'qux';`; + const baz = 'qux';` const expectedTokens = [ { type: 'code', value: 'const foo = \'bar\';' }, { type: 'code', value: 'const baz = \'qux\';' }, - ]; + ] - const tokens = Lexer.lex(code); + const tokens = Lexer.lex(code) - expect(tokens).toEqual(expectedTokens); - }); -}); + expect(tokens).toEqual(expectedTokens) + }) +}) diff --git a/test/parser.test.ts b/test/parser.test.ts index 169bde1..78de640 100644 --- a/test/parser.test.ts +++ b/test/parser.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest' import { Parser } from '../src' -describe('Parser', () => { +describe('parser', () => { it('should parse code statements', () => { const tokens = [{ type: 'code', value: 'console.log("Hello, World!")' }] const ast = Parser.parse(tokens) @@ -14,4 +14,4 @@ describe('Parser', () => { const tokens = [{ type: 'unknown', value: 'unknown token' }] expect(() => Parser.parse(tokens)).toThrowError('Parser: Unknown token type: unknown') }) -}); +}) diff --git a/test/transformer.test.ts b/test/transformer.test.ts index 1f00ce1..8474554 100644 --- a/test/transformer.test.ts +++ b/test/transformer.test.ts @@ -1,16 +1,17 @@ import { describe, expect, it } from 'vitest' -import { Transformer } from '../src/core/context/transformer'; -import { ProgramNode, createProgramNode } from '../src'; +import { Transformer } from '../src/core/context/transformer' +import type { ProgramNode } from '../src' +import { createProgramNode } from '../src' -describe('Transformer', () => { +describe('transformer', () => { it('should transform the program correctly', () => { const program = createProgramNode([ { type: 'CodeStatement', - code: 'console.log("Hello, world!");' - } + code: 'console.log("Hello, world!");', + }, ]) - const transformedProgram = Transformer.transform(program); + const transformedProgram = Transformer.transform(program) // Assert the transformed program expect(transformedProgram).toEqual({ @@ -18,19 +19,19 @@ describe('Transformer', () => { body: [ { type: 'CodeStatement', - code: 'console.log("Hello, world!");' - } - ] - }); - }); + code: 'console.log("Hello, world!");', + }, + ], + }) + }) it('should throw an error for unknown node type', () => { const program = { type: 'UnknownNodeType', - body: [] + body: [], } as unknown as ProgramNode expect(() => { - Transformer.transform(program); - }).toThrowError('Transformer: Unknown node type: UnknownNodeType'); - }); -}); + Transformer.transform(program) + }).toThrowError('Transformer: Unknown node type: UnknownNodeType') + }) +}) diff --git a/tsconfig.json b/tsconfig.json index 374365d..e5c524f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,12 @@ { "compilerOptions": { "target": "es2017", - "module": "esnext", "lib": ["esnext", "DOM"], + "module": "esnext", "moduleResolution": "node", - "esModuleInterop": true, + "resolveJsonModule": true, "strict": true, "strictNullChecks": true, - "resolveJsonModule": true + "esModuleInterop": true } } From ce2f05ca7abb4c4304d0a0c705d68e35ce9bd120 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 17:31:43 +0800 Subject: [PATCH 12/19] test: add generator test --- test/generator.test.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/generator.test.ts diff --git a/test/generator.test.ts b/test/generator.test.ts new file mode 100644 index 0000000..b1da961 --- /dev/null +++ b/test/generator.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, it } from 'vitest' +import { Generator } from '../src/core/context/generator' + +describe('generator', () => { + it('should generate code for Program node', () => { + const node = { + type: 'Program', + body: [ + { type: 'CodeStatement', value: 'console.log("Hello, World!");' }, + { type: 'CodeStatement', value: 'console.log("Hello, KeJun");' }, + ], + } + const result = Generator.generate(node) + expect(result).toBe('console.log("Hello, World!");\nconsole.log("Hello, KeJun");') + }) + + it('should generate code for CodeStatement node', () => { + const node = { + type: 'CodeStatement', + value: 'console.log("Hello, World!");', + } + const result = Generator.generate(node) + expect(result).toBe('console.log("Hello, World!");') + }) + + it('should throw an error for unknown node type', () => { + const node = { + type: 'UnknownNode', + value: 'console.log("Hello, World!");', + } + expect(() => Generator.generate(node)).toThrowError('Generator: Unknown node type: UnknownNode') + }) +}) From b880e44daea4e39e27450ae0d2f6641c9217e081 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 18:43:12 +0800 Subject: [PATCH 13/19] test: add more test --- src/core/directives/define.ts | 44 +++++++++++++++++++----- src/core/directives/if.ts | 3 +- src/core/directives/message.ts | 2 +- src/core/types/node.ts | 2 +- test/__snapshots__/if.test.ts.snap | 55 ++++++++++++++++++++++++++++++ test/define.test.ts | 32 +++++++++++++++++ test/fixtures/define.txt | 4 +++ test/fixtures/if.css | 36 +++++++++++++++++++ test/fixtures/if.html | 27 +++++++++++++++ test/fixtures/if.js | 25 ++++++++++++++ test/fixtures/undef.txt | 4 +++ test/if.test.ts | 31 +++++++++++++++++ 12 files changed, 253 insertions(+), 12 deletions(-) create mode 100644 test/__snapshots__/if.test.ts.snap create mode 100644 test/define.test.ts create mode 100644 test/fixtures/define.txt create mode 100644 test/fixtures/if.css create mode 100644 test/fixtures/if.html create mode 100644 test/fixtures/if.js create mode 100644 test/fixtures/undef.txt create mode 100644 test/if.test.ts diff --git a/src/core/directives/define.ts b/src/core/directives/define.ts index 4ed7c5d..8b8db7a 100644 --- a/src/core/directives/define.ts +++ b/src/core/directives/define.ts @@ -1,10 +1,36 @@ +/* eslint-disable no-new-func */ +import process from 'node:process' import { defineDirective } from '../directive' import type { DefineStatement, DefineToken } from '../types' import { createProgramNode, simpleMatchToken } from '../utils' +function resolveDefineNameAndValue(expression: string, env = process.env): [string, boolean] { + if (/^\w*$/.test(expression)) { + return [expression, true] + } + + else { + const evaluateExpression = new Function('env', `with (env){ return {${expression.replace('=', ':')}} }`) + return Object.entries(evaluateExpression(env))[0] as any + } +} + export const theDefineDirective = defineDirective(context => ({ lex(comment) { - return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) + const defineMath = comment.match(/#define\s?([\w !=&|()'"?:]*)/) + if (defineMath) { + return { + type: 'define', + value: defineMath[1]?.trim(), + } + } + const undefMatch = comment.match(/#undef\s?(\w*)/) + if (undefMatch) { + return { + type: 'undef', + value: undefMatch[1]?.trim(), + } + } }, parse(token) { if (token.type === 'define' || token.type === 'undef') { @@ -12,17 +38,17 @@ export const theDefineDirective = defineDirective( return { type: 'DefineStatement', kind: token.type, - name: token.value, + value: token.value, } } }, transform(node) { if (node.type === 'DefineStatement') { - if (node.kind === 'define') - context.env[node.name] = true - - else if (node.kind === 'undef') - context.env[node.name] = false + if (node.kind === 'define') { + const [name, value] = resolveDefineNameAndValue(node.value, context.env) + context.env[name] = value + } + else if (node.kind === 'undef') { context.env[node.value] = false } return createProgramNode() } @@ -30,10 +56,10 @@ export const theDefineDirective = defineDirective( generate(node) { if (node.type === 'DefineStatement') { if (node.kind === 'define') - return `#${node.kind} ${node.name}` + return `#${node.kind} ${node.value}` else if (node.kind === 'undef') - return `#${node.kind} ${node.name}` + return `#${node.kind} ${node.value}` } }, })) diff --git a/src/core/directives/if.ts b/src/core/directives/if.ts index c8107a2..61f8ca3 100644 --- a/src/core/directives/if.ts +++ b/src/core/directives/if.ts @@ -7,6 +7,7 @@ export function resolveConditional(test: string, env = process.env) { test = test || 'true' test = test.trim() test = test.replace(/([^=!])=([^=])/g, '$1==$2') + // eslint-disable-next-line no-new-func const evaluateCondition = new Function('env', `with (env){ return ( ${test} ) }`) @@ -30,7 +31,7 @@ export function resolveConditional(test: string, env = process.env) { export const ifDirective = defineDirective((context) => { return { lex(comment) { - return simpleMatchToken(comment, /#(if|else|elif|endif)\s*(.*)/) + return simpleMatchToken(comment, /#(if|else|elif|endif)\s?([\w !=&|()'"?:]*).*/) }, parse(token) { if (token.type === 'if' || token.type === 'elif' || token.type === 'else') { diff --git a/src/core/directives/message.ts b/src/core/directives/message.ts index ce4b4f0..826a2c5 100644 --- a/src/core/directives/message.ts +++ b/src/core/directives/message.ts @@ -4,7 +4,7 @@ import { createProgramNode, simpleMatchToken } from '../utils' export const MessageDirective = defineDirective(context => ({ lex(comment) { - return simpleMatchToken(comment, /#(error|warning|info)\s*(.*)/) + return simpleMatchToken(comment, /#(error|warning|info)\s*([\u4E00-\u9FA5 \t\w]*)/) }, parse(token) { if (token.type === 'error' || token.type === 'warning' || token.type === 'info') { diff --git a/src/core/types/node.ts b/src/core/types/node.ts index a67ed6e..f68f5fd 100644 --- a/src/core/types/node.ts +++ b/src/core/types/node.ts @@ -21,7 +21,7 @@ export interface IfStatement extends SimpleNode { export interface DefineStatement extends SimpleNode { type: 'DefineStatement' kind: 'define' | 'undef' - name: string + value: string } export interface MessageStatement extends SimpleNode { diff --git a/test/__snapshots__/if.test.ts.snap b/test/__snapshots__/if.test.ts.snap new file mode 100644 index 0000000..d9069e8 --- /dev/null +++ b/test/__snapshots__/if.test.ts.snap @@ -0,0 +1,55 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`if > should parse if.css, dev = false 1`] = ` +"body { +} +body { +content: "!DEV"; +} +body { +content: "!DEV"; +} +body { +}" +`; + +exports[`if > should parse if.css, dev = true 1`] = ` +"body { +content: "DEV"; +} +body { +content: "!DEV else"; +} +body { +content: "TEST"; +} +body { +content: "else"; +}" +`; + +exports[`if > should parse if.html, dev = false 1`] = ` +"
!DEV
+
!DEV
" +`; + +exports[`if > should parse if.html, dev = true 1`] = ` +"
DEV
+
!DEV else
+
TEST
+
+
else
+
" +`; + +exports[`if > should parse if.js, dev = false 1`] = ` +"console.log('!DEV') +console.log('!DEV')" +`; + +exports[`if > should parse if.js, dev = true 1`] = ` +"console.log('DEV') +console.log('!DEV else') +console.log('TEST') +console.log('else')" +`; diff --git a/test/define.test.ts b/test/define.test.ts new file mode 100644 index 0000000..2f76281 --- /dev/null +++ b/test/define.test.ts @@ -0,0 +1,32 @@ +import { resolve } from 'node:path' +import { readFileSync } from 'node:fs' +import { describe, expect, it } from 'vitest' +import fg from 'fast-glob' +import { Context, theDefineDirective } from '../src' + +describe('define', () => { + const root = resolve(__dirname, './fixtures') + const context = new Context({ + // @ts-expect-error ignore + directives: [theDefineDirective], + }) + + it('should define env', () => { + const code = readFileSync(resolve(root, 'define.txt'), 'utf-8') + context.transform(code, 'define.txt') + + expect(context.env.html).toBeTruthy() + expect(context.env.css).toBeTruthy() + expect(context.env.js).toBeTruthy() + expect(context.env.DEV).toBe('2') + }) + it('should undef env', () => { + const code = readFileSync(resolve(root, 'undef.txt'), 'utf-8') + context.transform(code, 'undef.txt') + + expect(context.env.html).toBeFalsy() + expect(context.env.css).toBeFalsy() + expect(context.env.js).toBeFalsy() + expect(context.env.DEV).toBeFalsy() + }) +}) diff --git a/test/fixtures/define.txt b/test/fixtures/define.txt new file mode 100644 index 0000000..14120a9 --- /dev/null +++ b/test/fixtures/define.txt @@ -0,0 +1,4 @@ + +/* #define css */ +// #define js +/* #define DEV = !TEST ? '1' : '2' diff --git a/test/fixtures/if.css b/test/fixtures/if.css new file mode 100644 index 0000000..549e709 --- /dev/null +++ b/test/fixtures/if.css @@ -0,0 +1,36 @@ +body { + /* #if DEV */ + content: "DEV"; + /* #endif */ +} + + +body { + /* #if !DEV */ + content: "!DEV"; + /* #else */ + content: "!DEV else"; + /* #endif */ +} + + +body { + /* #if !DEV */ + content: "!DEV"; + /* #elif TEST */ + content: "TEST"; + /* #else */ + content: "!DEV else"; + /* #endif */ +} + + +body { + /* #if DEV */ + /* #if !TEST */ + content: "!DEV !TEST"; + /* #else */ + content: "else"; + /* #endif */ + /* #endif */ +} diff --git a/test/fixtures/if.html b/test/fixtures/if.html new file mode 100644 index 0000000..1a0645d --- /dev/null +++ b/test/fixtures/if.html @@ -0,0 +1,27 @@ + +
DEV
+ + + +
!DEV
+ +
!DEV else
+ + + +
!DEV
+ +
TEST
+ +
!DEV else
+ + + +
+ +
!DEV !TEST
+ +
else
+ +
+ diff --git a/test/fixtures/if.js b/test/fixtures/if.js new file mode 100644 index 0000000..6cd9f3b --- /dev/null +++ b/test/fixtures/if.js @@ -0,0 +1,25 @@ +// #if DEV +console.log('DEV') +// #endif + +// #if !DEV +console.log('!DEV') +// #else +console.log('!DEV else') +// #endif + +// #if !DEV +console.log('!DEV') +// #elif TEST +console.log('TEST') +// #else +console.log('!DEV else') +// #endif + +// #if DEV +// #if !TEST +console.log('!DEV !TEST') +// #else +console.log('else') +// #endif +// #endif diff --git a/test/fixtures/undef.txt b/test/fixtures/undef.txt new file mode 100644 index 0000000..fb62c61 --- /dev/null +++ b/test/fixtures/undef.txt @@ -0,0 +1,4 @@ + +/* #undef css */ +// #undef js +// #undef DEV diff --git a/test/if.test.ts b/test/if.test.ts new file mode 100644 index 0000000..7a5eb9c --- /dev/null +++ b/test/if.test.ts @@ -0,0 +1,31 @@ +import { resolve } from 'node:path' +import { readFileSync } from 'node:fs' +import { describe, expect, it } from 'vitest' +import fg from 'fast-glob' +import { Context, ifDirective } from '../src' + +describe('if', () => { + const root = resolve(__dirname, './fixtures') + const context = new Context({ + // @ts-expect-error ignore + directives: [ifDirective], + }) + + fg.sync('if.*', { cwd: root }).forEach((file) => { + it(`should parse ${file}, dev = true`, () => { + context.env.DEV = true + const code = readFileSync(resolve(root, file), 'utf-8') + const result = context.transform(code, file) + expect(result).toMatchSnapshot() + }) + }) + + fg.sync('if.*', { cwd: root }).forEach((file) => { + it(`should parse ${file}, dev = false`, () => { + context.env.DEV = false + const code = readFileSync(resolve(root, file), 'utf-8') + const result = context.transform(code, file) + expect(result).toMatchSnapshot() + }) + }) +}) From 8d68a51cd056e058ba832ab5c0aa144e7727990b Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 19:13:56 +0800 Subject: [PATCH 14/19] feat: add comment type for token --- src/core/constant.ts | 25 +++++++++++++++++++++++++ src/core/context/generator.ts | 4 +++- src/core/context/lexer.ts | 18 +++++------------- src/core/context/parser.ts | 2 +- src/core/directives/define.ts | 3 ++- src/core/directives/if.ts | 2 +- src/core/directives/message.ts | 2 +- src/core/index.ts | 1 + src/core/types/comment.ts | 6 ++++++ src/core/types/directive.ts | 5 ++++- src/core/types/index.ts | 1 + src/core/utils.ts | 19 +++++++++++++++++++ test/fixtures/define.txt | 2 +- 13 files changed, 70 insertions(+), 20 deletions(-) create mode 100644 src/core/constant.ts create mode 100644 src/core/types/comment.ts diff --git a/src/core/constant.ts b/src/core/constant.ts new file mode 100644 index 0000000..cc6ebfa --- /dev/null +++ b/src/core/constant.ts @@ -0,0 +1,25 @@ +import type { Comment } from './types' + +export const comments: Comment[] = [ + // js + { + type: 'js', + start: '// ', + end: '', + regex: /^\/\/\s?(.*)$/, + }, + // css + { + type: 'css', + start: '/* ', + end: ' */', + regex: /^\/\*\s?(.*)\*\/$/, + }, + // html + { + type: 'html', + start: '', + regex: /^$/, + }, +] diff --git a/src/core/context/generator.ts b/src/core/context/generator.ts index d5301e6..eb260cf 100644 --- a/src/core/context/generator.ts +++ b/src/core/context/generator.ts @@ -1,4 +1,5 @@ import type { Generate, SimpleNode } from '../types' +import { findComment } from '../utils' export class Generator { constructor(public node: SimpleNode, public generates: Generate[] = []) { @@ -13,7 +14,8 @@ export class Generator { } for (const generate of this.generates) { - const generated = generate.call(this, node) + const comment = findComment(node.comment!) + const generated = generate.call(this, node, comment) if (generated) return generated } diff --git a/src/core/context/lexer.ts b/src/core/context/lexer.ts index eea0dd4..080af53 100644 --- a/src/core/context/lexer.ts +++ b/src/core/context/lexer.ts @@ -1,18 +1,8 @@ /* eslint-disable no-restricted-syntax */ /* eslint-disable no-labels */ +import { isComment, parseComment } from '../utils' import type { CodeToken, Lex, SimpleToken } from '../types' -export function isComment(line: string) { - return ( - // JS comment - line.slice(0, 3) === '// ' - // CSS comment - || line.slice(0, 3) === '/* ' - // HTML comment - || line.slice(0, 5) === ' /* #define css */ // #define js -/* #define DEV = !TEST ? '1' : '2' +// #define DEV = !TEST ? '1' : '2' From 5626dcbe3499bd767720ce6688616d731a9eda72 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 19:17:07 +0800 Subject: [PATCH 15/19] fix: support generate source comment --- src/core/directives/define.ts | 8 ++++---- src/core/directives/if.ts | 10 +++++----- src/core/directives/message.ts | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/core/directives/define.ts b/src/core/directives/define.ts index 185e9a0..b745183 100644 --- a/src/core/directives/define.ts +++ b/src/core/directives/define.ts @@ -54,13 +54,13 @@ export const theDefineDirective = defineDirective( return createProgramNode() } }, - generate(node) { - if (node.type === 'DefineStatement') { + generate(node, comment) { + if (node.type === 'DefineStatement' && comment) { if (node.kind === 'define') - return `#${node.kind} ${node.value}` + return `${comment.start} #${node.kind} ${node.value} ${comment.end}` else if (node.kind === 'undef') - return `#${node.kind} ${node.value}` + return `${comment.start} #${node.kind} ${node.value} ${comment.end}` } }, })) diff --git a/src/core/directives/if.ts b/src/core/directives/if.ts index 5086580..89c6716 100644 --- a/src/core/directives/if.ts +++ b/src/core/directives/if.ts @@ -78,14 +78,14 @@ export const ifDirective = defineDirective((context) => { } } }, - generate(node) { - if (node.type === 'IfStatement') { + generate(node, comment) { + if (node.type === 'IfStatement' && comment) { let code = '' if (node.kind === 'else') - code = '// #else' + code = `${comment.start} ${node.kind} ${comment.end}` else - code = `// #${node.kind} ${node.test}` + code = `${comment.start} #${node.kind} ${node.test}${comment.end}` const consequentCode = node.consequent.map(this.walk.bind(this)).join('\n') code += `\n${consequentCode}` @@ -94,7 +94,7 @@ export const ifDirective = defineDirective((context) => { code += `\n${alternateCode}` } else { - code += '\n// #endif' + code += `\n${comment.start} #endif ${comment.end}` } return code } diff --git a/src/core/directives/message.ts b/src/core/directives/message.ts index ce4b4f0..a55ab74 100644 --- a/src/core/directives/message.ts +++ b/src/core/directives/message.ts @@ -32,8 +32,8 @@ export const MessageDirective = defineDirective( return createProgramNode() } }, - generate(node) { - if (node.type === 'MessageStatement') - return `#${node.kind} ${node.value}` + generate(node, comment) { + if (node.type === 'MessageStatement' && comment) + return `${comment.start} #${node.kind} ${node.value} ${comment.end}` }, })) From 9062c4456678a4ad8f2a328505291e6f62b81ccd Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 19:23:18 +0800 Subject: [PATCH 16/19] test: update --- test/generator.test.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/generator.test.ts b/test/generator.test.ts index b1da961..8555b99 100644 --- a/test/generator.test.ts +++ b/test/generator.test.ts @@ -1,5 +1,8 @@ +import { readFileSync } from 'node:fs' +import { resolve } from 'node:path' import { describe, expect, it } from 'vitest' import { Generator } from '../src/core/context/generator' +import { Context, Lexer, Parser } from '../src' describe('generator', () => { it('should generate code for Program node', () => { @@ -23,6 +26,15 @@ describe('generator', () => { expect(result).toBe('console.log("Hello, World!");') }) + it('should generate code without transform', () => { + const ctx = new Context() + const code = readFileSync(resolve(__dirname, './fixtures/if.html'), 'utf-8') + const tokens = Lexer.lex(code, ctx.lexers) + const ast = Parser.parse(tokens, ctx.parsers) + const generated = Generator.generate(ast, ctx.generates) + expect(generated.replaceAll(/\s/g, '')).toBe(code.replaceAll(/\s/g, '')) + }) + it('should throw an error for unknown node type', () => { const node = { type: 'UnknownNode', From 72d879b1f1d6292ee14574f29ff308f0274c37d6 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 19:25:23 +0800 Subject: [PATCH 17/19] chore: lint code --- eslint.config.js | 4 +++- src/core/directives/define.ts | 6 ++++-- test/define.test.ts | 1 - 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 6a1a5cb..d8c85cd 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,3 +1,5 @@ import antfu from '@antfu/eslint-config' -export default antfu() +export default antfu({ + ignores: ['**/test/fixtures/**/*.*'], +}) diff --git a/src/core/directives/define.ts b/src/core/directives/define.ts index b745183..5b9c964 100644 --- a/src/core/directives/define.ts +++ b/src/core/directives/define.ts @@ -1,8 +1,9 @@ +/* eslint-disable curly */ /* eslint-disable no-new-func */ import process from 'node:process' import { defineDirective } from '../directive' import type { DefineStatement, DefineToken } from '../types' -import { createProgramNode, simpleMatchToken } from '../utils' +import { createProgramNode } from '../utils' function resolveDefineNameAndValue(expression: string, env = process.env): [string, boolean] { if (/^\w*$/.test(expression)) { @@ -49,7 +50,8 @@ export const theDefineDirective = defineDirective( const [name, value] = resolveDefineNameAndValue(node.value, context.env) context.env[name] = value } - else if (node.kind === 'undef') { context.env[node.value] = false } + else if (node.kind === 'undef') + context.env[node.value] = false return createProgramNode() } diff --git a/test/define.test.ts b/test/define.test.ts index 2f76281..37194f2 100644 --- a/test/define.test.ts +++ b/test/define.test.ts @@ -1,7 +1,6 @@ import { resolve } from 'node:path' import { readFileSync } from 'node:fs' import { describe, expect, it } from 'vitest' -import fg from 'fast-glob' import { Context, theDefineDirective } from '../src' describe('define', () => { From 7b47150482e90e5539e55d85f82d429b182b105f Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 19:38:05 +0800 Subject: [PATCH 18/19] feat: return remap for vite fixed #4 --- package.json | 1 + pnpm-lock.yaml | 9 +++------ src/core/context/index.ts | 17 ++++++++++++++--- src/core/unplugin.ts | 16 ++++++++++++++++ 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 83de644..deffcfe 100644 --- a/package.json +++ b/package.json @@ -170,6 +170,7 @@ } }, "dependencies": { + "@ampproject/remapping": "^2.2.1", "magic-string": "^0.30.5", "unplugin": "^1.6.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51996a2..82be522 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ampproject/remapping': + specifier: ^2.2.1 + version: 2.2.1 '@rspack/core': specifier: '*' version: 0.3.4 @@ -139,7 +142,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - dev: true /@antfu/eslint-config@2.6.3(@vue/compiler-sfc@3.4.15)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.1): resolution: {integrity: sha512-sfkamrOatMwMZkp14mBerHKIw8FY0SD1iCb5UZ6Y5hgb+FeDpNQPlVA0i2PN95TQ8NSYyPC1QnoM+UA5NSl0Kg==} @@ -740,17 +742,14 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 - dev: true /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/source-map@0.3.3: resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} @@ -761,7 +760,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -771,7 +769,6 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true /@jsdevtools/ez-spawn@3.0.4: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} diff --git a/src/core/context/index.ts b/src/core/context/index.ts index aa3762e..2c438e4 100644 --- a/src/core/context/index.ts +++ b/src/core/context/index.ts @@ -1,6 +1,7 @@ import process from 'node:process' import type { Logger } from 'vite' import { createFilter, createLogger, loadEnv } from 'vite' +import MagicString from 'magic-string' import type { UserOptions } from '../../types' import type { Generate, Lex, ObjectDirective, Parse, Transform } from '../types' import { Generator } from './generator' @@ -80,9 +81,19 @@ export class Context { const ast = Parser.parse(tokens, this.parsers) const transformed = Transformer.transform(ast, this.transforms) - if (transformed) { - const generated = Generator.generate(transformed, this.generates) - return generated + if (transformed) + return Generator.generate(transformed, this.generates) + } + + transformWithMap(code: string, _id: string) { + const generated = this.transform(code, _id) + if (generated) { + const ms = new MagicString(code, { filename: _id }) + ms.overwrite(0, code.length, generated) + return { + code: ms.toString(), + map: ms.generateMap({ hires: true }), + } } } } diff --git a/src/core/unplugin.ts b/src/core/unplugin.ts index a2d6cfb..d4c79fe 100644 --- a/src/core/unplugin.ts +++ b/src/core/unplugin.ts @@ -1,5 +1,6 @@ import type { UnpluginFactory } from 'unplugin' import { createUnplugin } from 'unplugin' +import remapping from '@ampproject/remapping' import type { UserOptions } from '../types' import { Context } from './context' import { MessageDirective, ifDirective, theDefineDirective } from './directives' @@ -23,6 +24,21 @@ export const unpluginFactory: UnpluginFactory = ( ...config.env, } }, + transform(code, id) { + if (ctx.filter(id)) { + const transformed = ctx.transformWithMap(code, id) + if (transformed) { + const map = remapping( + [transformed.map, this.getCombinedSourcemap() as any], + () => null, + ) as any + return { + code: transformed.code, + map, + } + } + } + }, }, } } From 840fd106dcdb66f781950b93c24af72920015a27 Mon Sep 17 00:00:00 2001 From: kejun Date: Sun, 21 Jan 2024 19:41:01 +0800 Subject: [PATCH 19/19] docs: update readme --- README.md | 75 ++++++++++++++++++++++++++++++++++++------------- README.zh-cn.md | 42 +++++++++++++-------------- 2 files changed, 76 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 08b65e1..6839198 100644 --- a/README.md +++ b/README.md @@ -200,40 +200,75 @@ You can used `defineDirective` to define your own directive. Taking the built-in directive as an example: ```ts -export default defineDirective(context => ({ +export const MessageDirective = defineDirective(context => ({ lex(comment) { - return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) + return simpleMatchToken(comment, /#(error|warning|info)\s*(.*)/) }, parse(token) { - if (token.type === 'define' || token.type === 'undef') { + if (token.type === 'error' || token.type === 'warning' || token.type === 'info') { this.current++ return { - type: 'DefineStatement', + type: 'MessageStatement', kind: token.type, - name: token.value, + value: token.value, } } }, transform(node) { - if (node.type === 'DefineStatement') { - if (node.kind === 'define') - context.env[node.name] = true - - else if (node.kind === 'undef') - context.env[node.name] = false - + if (node.type === 'MessageStatement') { + switch (node.kind) { + case 'error': + context.logger.error(node.value, { timestamp: true }) + break + case 'warning': + context.logger.warn(node.value, { timestamp: true }) + break + case 'info': + context.logger.info(node.value, { timestamp: true }) + break + } return createProgramNode() } }, - generate(node) { - if (node.type === 'DefineStatement') { - if (node.kind === 'define') - return `#${node.kind} ${node.name}` - - else if (node.kind === 'undef') - return `#${node.kind} ${node.name}` + generate(node, comment) { + if (node.type === 'MessageStatement' && comment) + return `${comment.start} #${node.kind} ${node.value} ${comment.end}` + }, +})) +export const MessageDirective = defineDirective(context => ({ + lex(comment) { + return simpleMatchToken(comment, /#(error|warning|info)\s*(.*)/) + }, + parse(token) { + if (token.type === 'error' || token.type === 'warning' || token.type === 'info') { + this.current++ + return { + type: 'MessageStatement', + kind: token.type, + value: token.value, + } } - } + }, + transform(node) { + if (node.type === 'MessageStatement') { + switch (node.kind) { + case 'error': + context.logger.error(node.value, { timestamp: true }) + break + case 'warning': + context.logger.warn(node.value, { timestamp: true }) + break + case 'info': + context.logger.info(node.value, { timestamp: true }) + break + } + return createProgramNode() + } + }, + generate(node, comment) { + if (node.type === 'MessageStatement' && comment) + return `${comment.start} #${node.kind} ${node.value} ${comment.end}` + }, })) ``` diff --git a/README.zh-cn.md b/README.zh-cn.md index e7e4ce7..b253ada 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -201,40 +201,40 @@ class MyClass { 以内置指令为例: ```ts -export default defineDirective(context => ({ +export const MessageDirective = defineDirective(context => ({ lex(comment) { - return simpleMatchToken(comment, /#(define|undef)\s*(.*)/) + return simpleMatchToken(comment, /#(error|warning|info)\s*(.*)/) }, parse(token) { - if (token.type === 'define' || token.type === 'undef') { + if (token.type === 'error' || token.type === 'warning' || token.type === 'info') { this.current++ return { - type: 'DefineStatement', + type: 'MessageStatement', kind: token.type, - name: token.value, + value: token.value, } } }, transform(node) { - if (node.type === 'DefineStatement') { - if (node.kind === 'define') - context.env[node.name] = true - - else if (node.kind === 'undef') - context.env[node.name] = false - + if (node.type === 'MessageStatement') { + switch (node.kind) { + case 'error': + context.logger.error(node.value, { timestamp: true }) + break + case 'warning': + context.logger.warn(node.value, { timestamp: true }) + break + case 'info': + context.logger.info(node.value, { timestamp: true }) + break + } return createProgramNode() } }, - generate(node) { - if (node.type === 'DefineStatement') { - if (node.kind === 'define') - return `#${node.kind} ${node.name}` - - else if (node.kind === 'undef') - return `#${node.kind} ${node.name}` - } - } + generate(node, comment) { + if (node.type === 'MessageStatement' && comment) + return `${comment.start} #${node.kind} ${node.value} ${comment.end}` + }, })) ```