]> git.ipfire.org Git - thirdparty/vuejs/create-vue.git/commitdiff
refactor!: use `@vue/create-eslint-config` for ESLint config generation
authorHaoqun Jiang <haoqunjiang@gmail.com>
Sun, 4 Sep 2022 04:52:21 +0000 (12:52 +0800)
committerHaoqun Jiang <haoqunjiang@gmail.com>
Sun, 4 Sep 2022 04:55:13 +0000 (12:55 +0800)
Airbnb & Standard options are not added yet.

The difference with the previous implementation is that we now
use `@vue/eslint-config-typescript` instead of
`@vue/eslint-config-typescript/recommended`, because I'm not very
satisfied with the current implementation of the latter config.
There are some edge cases that may confuse users.

I need to find time to refactor that package in the coming months.

LICENSE
package.json
pnpm-lock.yaml
template/eslint/package.json
utils/renderEslint.ts

diff --git a/LICENSE b/LICENSE
index 67ac4d3cb750520505f85c17b2de04cd961e6e34..288a289f4d724db5701fca5bdf3f010515a26211 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -31,6 +31,64 @@ MIT
 
 ## Bundled dependencies
 
+## @vue/create-eslint-config
+
+License: MIT
+By: Haoqun Jiang
+Repository: git+https://github.com/vuejs/create-eslint-config.git
+
+> MIT License
+>
+> Copyright (c) 2022 vuejs
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in all
+> copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+> SOFTWARE.
+>
+
+## javascript-stringify
+
+License: MIT
+By: Blake Embrey
+Repository: git+https://github.com/blakeembrey/javascript-stringify.git
+
+> The MIT License (MIT)
+>
+> Copyright (c) 2013 Blake Embrey (hello@blakeembrey.com)
+>
+> Permission is hereby granted, free of charge, to any person obtaining a copy
+> of this software and associated documentation files (the "Software"), to deal
+> in the Software without restriction, including without limitation the rights
+> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+> copies of the Software, and to permit persons to whom the Software is
+> furnished to do so, subject to the following conditions:
+>
+> The above copyright notice and this permission notice shall be included in
+> all copies or substantial portions of the Software.
+>
+> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+> THE SOFTWARE.
+>
+
 ## kleur
 
 License: MIT
index a2549a9253cb5bf5f0900d84c50159bb6fde60b0..cd5f690d4afca2f68504b5b3fb751fca7ff74944 100644 (file)
@@ -36,6 +36,7 @@
   "devDependencies": {
     "@types/eslint": "^8.4.6",
     "@types/prompts": "^2.0.14",
+    "@vue/create-eslint-config": "^0.1.2",
     "@vue/tsconfig": "^0.1.3",
     "esbuild": "^0.14.53",
     "esbuild-plugin-license": "^1.2.2",
index b12d647602476f2a2d7e12106e079e7b8572028d..8456521c755b75e2a9d12e3855f8a779bb64c33b 100644 (file)
@@ -6,6 +6,7 @@ importers:
     specifiers:
       '@types/eslint': ^8.4.6
       '@types/prompts': ^2.0.14
+      '@vue/create-eslint-config': ^0.1.2
       '@vue/tsconfig': ^0.1.3
       esbuild: ^0.14.53
       esbuild-plugin-license: ^1.2.2
@@ -20,6 +21,7 @@ importers:
     devDependencies:
       '@types/eslint': 8.4.6
       '@types/prompts': 2.0.14
+      '@vue/create-eslint-config': 0.1.2
       '@vue/tsconfig': 0.1.3
       esbuild: 0.14.53
       esbuild-plugin-license: 1.2.2_esbuild@0.14.53
@@ -32,6 +34,2054 @@ importers:
       prompts: 2.4.2
       zx: 4.3.0
 
+  playground/cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      cypress: ^10.6.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/default:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/jsx:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/jsx-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      cypress: ^10.6.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/jsx-pinia:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/jsx-pinia-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      cypress: ^10.6.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/jsx-pinia-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-pinia-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-pinia-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-router:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/jsx-router-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      cypress: ^10.6.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/jsx-router-pinia:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/jsx-router-pinia-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      cypress: ^10.6.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/jsx-router-pinia-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-router-pinia-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-router-pinia-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-router-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-router-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-router-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/jsx-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/pinia:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/pinia-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      cypress: ^10.6.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/pinia-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/pinia-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/pinia-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/router:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/router-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      cypress: ^10.6.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/router-pinia:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      vite: 3.0.9
+
+  playground/router-pinia-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      cypress: ^10.6.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      cypress: 10.6.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+
+  playground/router-pinia-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/router-pinia-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/router-pinia-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      pinia: 2.0.19_vue@3.2.37
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/router-vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/router-vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/router-with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/typescript:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-pinia:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-pinia-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-pinia-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-pinia-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-pinia-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-pinia:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-pinia-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-pinia-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-pinia-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-pinia-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-router-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-jsx-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vitejs/plugin-vue-jsx': ^2.0.0
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vitejs/plugin-vue-jsx': 2.0.0_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-pinia:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-pinia-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-pinia-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-pinia-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-pinia-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-pinia:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-pinia-cypress:
+    specifiers:
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-pinia-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-pinia-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-pinia-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      pinia: ^2.0.19
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      pinia: 2.0.19_j6bzmzd4ujpabbp5objtwxyjp4
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-router-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-router: ^4.1.3
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+      vue-router: 4.1.3_vue@3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-vitest:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-vitest-cypress:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/typescript-with-tests:
+    specifiers:
+      '@types/jsdom': ^20.0.0
+      '@types/node': ^16.11.49
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      '@vue/tsconfig': ^0.1.3
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      npm-run-all: ^4.1.5
+      start-server-and-test: ^1.14.0
+      typescript: ~4.7.4
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+      vue-tsc: ^0.40.1
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@types/jsdom': 20.0.0
+      '@types/node': 16.11.49
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      '@vue/tsconfig': 0.1.3_@types+node@16.11.49
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      npm-run-all: 4.1.5
+      start-server-and-test: 1.14.0
+      typescript: 4.7.4
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+      vue-tsc: 0.40.1_typescript@4.7.4
+
+  playground/vitest:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      jsdom: ^20.0.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      jsdom: 20.0.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/vitest-cypress:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
+  playground/with-tests:
+    specifiers:
+      '@vitejs/plugin-vue': ^3.0.3
+      '@vue/test-utils': ^2.0.2
+      cypress: ^10.6.0
+      jsdom: ^20.0.0
+      start-server-and-test: ^1.14.0
+      vite: ^3.0.9
+      vitest: ^0.22.1
+      vue: ^3.2.37
+    dependencies:
+      vue: 3.2.37
+    devDependencies:
+      '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37
+      '@vue/test-utils': 2.0.2_vue@3.2.37
+      cypress: 10.6.0
+      jsdom: 20.0.0
+      start-server-and-test: 1.14.0
+      vite: 3.0.9
+      vitest: 0.22.1_jsdom@20.0.0
+
   template/base:
     specifiers:
       '@vitejs/plugin-vue': ^3.0.3
@@ -766,6 +2816,16 @@ packages:
       '@vue/compiler-dom': 3.2.37
       '@vue/shared': 3.2.37
 
+  /@vue/create-eslint-config/0.1.2:
+    resolution: {integrity: sha512-cyBRvjBFgcB4+mBxcwfnM/JyZnXSccW6TRV3HeSUWtIcH3JrK/UMqZQqfk+XOJwKjwYyskHBE6AeX7d+1RhQ/w==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    hasBin: true
+    dependencies:
+      enquirer: 2.3.6
+      javascript-stringify: 2.1.0
+      kolorist: 1.5.1
+    dev: true
+
   /@vue/devtools-api/6.2.1:
     resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==}
     dev: false
@@ -826,6 +2886,17 @@ packages:
         optional: true
     dev: true
 
+  /@vue/tsconfig/0.1.3_@types+node@16.11.49:
+    resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==}
+    peerDependencies:
+      '@types/node': '*'
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+    dependencies:
+      '@types/node': 16.11.49
+    dev: true
+
   /abab/2.0.6:
     resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
     dev: true
@@ -2380,6 +4451,10 @@ packages:
     resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
     dev: true
 
+  /javascript-stringify/2.1.0:
+    resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==}
+    dev: true
+
   /joi/17.6.0:
     resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==}
     dependencies:
@@ -2929,6 +5004,24 @@ packages:
     engines: {node: '>=4'}
     dev: true
 
+  /pinia/2.0.19_j6bzmzd4ujpabbp5objtwxyjp4:
+    resolution: {integrity: sha512-Q/UQrmFLDMdlCkLfM5rGw1Ug0A7dy0G7NtBusMQSK+TNjf3CV/pO0RqblNIfuurWl42byTjM6HIemCWOfo8KXA==}
+    peerDependencies:
+      '@vue/composition-api': ^1.4.0
+      typescript: '>=4.4.4'
+      vue: ^2.6.14 || ^3.2.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/devtools-api': 6.2.1
+      typescript: 4.7.4
+      vue: 3.2.37
+      vue-demi: 0.13.5_vue@3.2.37
+    dev: false
+
   /pinia/2.0.19_vue@3.2.37:
     resolution: {integrity: sha512-Q/UQrmFLDMdlCkLfM5rGw1Ug0A7dy0G7NtBusMQSK+TNjf3CV/pO0RqblNIfuurWl42byTjM6HIemCWOfo8KXA==}
     peerDependencies:
@@ -3491,7 +5584,6 @@ packages:
     resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
     engines: {node: '>=4.2.0'}
     hasBin: true
-    dev: true
 
   /unbox-primitive/1.0.2:
     resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
index 19c5650548f91c4e99c53ff145ae2d335c709d4c..d3f28f022d25356812419d89a15e8d22445b66b9 100644 (file)
@@ -1,11 +1,5 @@
 {
   "devDependencies": {
-    "@rushstack/eslint-patch": "^1.1.4",
-    "@vue/eslint-config-prettier": "^7.0.0",
-    "@vue/eslint-config-typescript": "^11.0.0",
-    "eslint": "^8.22.0",
-    "eslint-plugin-cypress": "^2.12.1",
-    "eslint-plugin-vue": "^9.3.0",
-    "prettier": "^2.7.1"
+    "eslint-plugin-cypress": "^2.12.1"
   }
 }
index 0d381c380a5ca4768358980c96db38a33e00b30d..1f0daa6c07425d72aaa2bb786276568e957a6260 100644 (file)
@@ -3,50 +3,21 @@ import * as path from 'node:path'
 
 import type { Linter } from 'eslint'
 
-import { devDependencies as allEslintDeps } from '../template/eslint/package.json' assert { type: 'json' }
-import deepMerge from './deepMerge'
-import sortDependencies from './sortDependencies'
-
-const dependencies = {}
-function addEslintDependency(name) {
-  dependencies[name] = allEslintDeps[name]
-}
+import createESLintConfig from '@vue/create-eslint-config'
 
-addEslintDependency('eslint')
-addEslintDependency('eslint-plugin-vue')
-
-interface ESLintConfig extends Linter.Config {
-  extends: string[]
-}
-const config: ESLintConfig = {
-  root: true,
-  extends: ['plugin:vue/vue3-essential'],
-  parserOptions: {
-    ecmaVersion: 'latest'
-  }
-}
-
-function configureEslint({ language, styleGuide, needsPrettier, needsCypress, needsCypressCT }) {
-  switch (`${styleGuide}-${language}`) {
-    case 'default-javascript':
-      config.extends.push('eslint:recommended')
-      break
-    case 'default-typescript':
-      addEslintDependency('@vue/eslint-config-typescript')
-      config.extends.push('eslint:recommended')
-      config.extends.push('@vue/eslint-config-typescript/recommended')
-      break
-    // TODO: airbnb and standard
-  }
+import { devDependencies as eslintDeps } from '../template/eslint/package.json' assert { type: 'json' }
+import sortDependencies from './sortDependencies'
+import deepMerge from './deepMerge'
 
-  if (needsPrettier) {
-    addEslintDependency('prettier')
-    addEslintDependency('@vue/eslint-config-prettier')
-    config.extends.push('@vue/eslint-config-prettier')
-  }
+export default function renderEslint(
+  rootDir,
+  { needsTypeScript, needsCypress, needsCypressCT, needsPrettier }
+) {
+  const additionalConfig: Linter.Config = {}
+  const additionalDependencies = {}
 
   if (needsCypress) {
-    const cypressOverrides = [
+    additionalConfig.overrides = [
       {
         files: needsCypressCT
           ? ['**/__tests__/*.{cy,spec}.{js,ts,jsx,tsx}', 'cypress/e2e/**.{cy,spec}.{js,ts,jsx,tsx}']
@@ -55,54 +26,39 @@ function configureEslint({ language, styleGuide, needsPrettier, needsCypress, ne
       }
     ]
 
-    addEslintDependency('eslint-plugin-cypress')
-    config.overrides = cypressOverrides
-  }
-
-  // generate the configuration file
-  let configuration = '/* eslint-env node */\n'
-  if (styleGuide !== 'default' || language !== 'javascript' || needsPrettier) {
-    addEslintDependency('@rushstack/eslint-patch')
-    configuration += `require("@rushstack/eslint-patch/modern-module-resolution");\n\n`
+    additionalDependencies['eslint-plugin-cypress'] = eslintDeps['eslint-plugin-cypress']
   }
-  configuration += `module.exports = ${JSON.stringify(config, undefined, 2)}\n`
-
-  return {
-    dependencies,
-    configuration
-  }
-}
 
-export default function renderEslint(
-  rootDir,
-  { needsTypeScript, needsCypress, needsCypressCT, needsPrettier }
-) {
-  const { dependencies, configuration } = configureEslint({
-    language: needsTypeScript ? 'typescript' : 'javascript',
+  const { pkg, files } = createESLintConfig({
+    vueVersion: '3.x',
     // we currently don't support other style guides
     styleGuide: 'default',
+    hasTypeScript: needsTypeScript,
     needsPrettier,
-    needsCypress,
-    needsCypressCT
+
+    additionalConfig,
+    additionalDependencies
   })
 
   // update package.json
   const packageJsonPath = path.resolve(rootDir, 'package.json')
   const existingPkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
-  const pkg = sortDependencies(
-    deepMerge(existingPkg, {
+  const updatedPkg = sortDependencies(
+    deepMerge(deepMerge(existingPkg, pkg), {
       scripts: {
         // Note that we reuse .gitignore here to avoid duplicating the configuration
         lint: needsTypeScript
           ? 'eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore'
           : 'eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore'
-      },
-      devDependencies: dependencies
+      }
     })
   )
-  fs.writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2) + '\n')
+  fs.writeFileSync(packageJsonPath, JSON.stringify(updatedPkg, null, 2) + '\n', 'utf-8')
 
-  // write to .eslintrc.cjs
-  const eslintrcPath = path.resolve(rootDir, '.eslintrc.cjs')
-  fs.writeFileSync(eslintrcPath, configuration)
+  // write to .eslintrc.cjs, .prettierrc.json, etc.
+  for (const [fileName, content] of Object.entries(files)) {
+    const fullPath = path.resolve(rootDir, fileName)
+    console.log(fullPath, content)
+    fs.writeFileSync(fullPath, content as string, 'utf-8')
+  }
 }