From de060b4148ad8abf1d6e47b16d018c2888501e7c Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Mon, 19 Jun 2023 14:37:37 -0400 Subject: [PATCH 1/2] Enable type checking --- nuxt.config.ts | 3 ++ package.json | 5 ++- pnpm-lock.yaml | 104 ++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 102 insertions(+), 10 deletions(-) diff --git a/nuxt.config.ts b/nuxt.config.ts index 5badb449..07e4fffd 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,4 +1,7 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ devtools: { enabled: true }, + typescript: { + typeCheck: true, + }, }); diff --git a/package.json b/package.json index 0d8fa0a9..a1b1872b 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "preview": "nuxt preview", "postinstall": "nuxt prepare", "lint": "eslint .", + "typecheck": "nuxt typecheck", "format": "prettier --write \"**/*.{md,y?(a)ml,json,vue}\"" }, "devDependencies": { @@ -20,7 +21,9 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-vue": "9.14.1", "nuxt": "3.5.2", - "prettier": "2.8.8" + "prettier": "2.8.8", + "typescript": "5.1.3", + "vue-tsc": "1.8.0" }, "packageManager": "pnpm@8.6.0", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6dab5993..2bef8271 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -31,10 +31,16 @@ devDependencies: version: 9.14.1(eslint@8.42.0) nuxt: specifier: 3.5.2 - version: 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3) + version: 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue-tsc@1.8.0) prettier: specifier: 2.8.8 version: 2.8.8 + typescript: + specifier: 5.1.3 + version: 5.1.3 + vue-tsc: + specifier: 1.8.0 + version: 1.8.0(typescript@5.1.3) packages: @@ -848,7 +854,7 @@ packages: '@nuxt/kit': 3.5.3 '@nuxt/schema': 3.5.3 execa: 7.1.1 - nuxt: 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3) + nuxt: 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue-tsc@1.8.0) vite: 4.3.9(@types/node@20.2.5) transitivePeerDependencies: - rollup @@ -896,7 +902,7 @@ packages: launch-editor: 2.6.0 local-pkg: 0.4.3 magicast: 0.2.9 - nuxt: 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3) + nuxt: 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue-tsc@1.8.0) nypm: 0.2.0 pacote: 15.2.0 pathe: 1.1.1 @@ -1044,7 +1050,7 @@ packages: resolution: {integrity: sha512-PjVETP7+iZXAs5Q8O4ivl4t6qjWZMZqwiTVogUXHoHGZZcw7GZW3u3tzfYfE1HbzyYJfr236IXqQ02MeR8Fz2w==} dev: true - /@nuxt/vite-builder@3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue@3.3.4): + /@nuxt/vite-builder@3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue-tsc@1.8.0)(vue@3.3.4): resolution: {integrity: sha512-w7ajMtMGKq/PE+dAcfuHio3qgE9ow51LZtNLJlmao3PXHzcpFBJLuuhlOumfwDX1ubpwDhoR8YcOsGwY9JWHqQ==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: @@ -1083,7 +1089,7 @@ packages: unplugin: 1.3.1 vite: 4.3.9(@types/node@20.2.5) vite-node: 0.31.4(@types/node@20.2.5) - vite-plugin-checker: 0.6.0(eslint@8.42.0)(typescript@5.1.3)(vite@4.3.9) + vite-plugin-checker: 0.6.0(eslint@8.42.0)(typescript@5.1.3)(vite@4.3.9)(vue-tsc@1.8.0) vue: 3.3.4 vue-bundle-renderer: 1.0.3 transitivePeerDependencies: @@ -1542,6 +1548,24 @@ packages: vue: 3.3.4 dev: true + /@volar/language-core@1.7.6: + resolution: {integrity: sha512-r+82YGjae8ALzaX+TaESpeBOrp/H5MQnPYZLq4WKd8rsPrCAPbMwelwHLHhFpyjy66BK/cKreJAcvOc6YEwyFA==} + dependencies: + '@volar/source-map': 1.7.6 + dev: true + + /@volar/source-map@1.7.6: + resolution: {integrity: sha512-6oGrgz+hg5GCzP8D2+ay7vOdIOA9/aXwpa22Wx5b6d4ZGwwosBqv7kVs8AyMh5zOSQpKhrImE1pfagpu+V+rBQ==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.7.6: + resolution: {integrity: sha512-JkBRQe2GYSEgamW84tDk4XQ/7abQJw09czLQCgL1jfjndhaV4DuAet2I3pvQv41OjodVc59W0+E3hylrlNsgWA==} + dependencies: + '@volar/language-core': 1.7.6 + dev: true + /@vue-macros/common@1.3.3(vue@3.3.4): resolution: {integrity: sha512-bjHomaf3mu+ARMD4DX22C/lLVVocbmwgcLH7bg1rK4kB5ghesgShZTQIrNR6ZjifQmdGc/2jjZ/25kSb364uEA==} engines: {node: '>=16.14.0'} @@ -1624,6 +1648,25 @@ packages: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} dev: true + /@vue/language-core@1.8.0(typescript@5.1.3): + resolution: {integrity: sha512-rOAtqIRyyZ6OQreAkFDbbDt7L5BwvzrdbWaBAoEZjr4ImPBV9cRDBHxlMBU0SBOAZxIUQdjOvQ0uAl9uZDer0w==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.7.6 + '@volar/source-map': 1.7.6 + '@vue/compiler-dom': 3.3.4 + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + minimatch: 9.0.1 + muggle-string: 0.3.1 + typescript: 5.1.3 + vue-template-compiler: 2.7.14 + dev: true + /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: @@ -1669,6 +1712,15 @@ packages: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true + /@vue/typescript@1.8.0(typescript@5.1.3): + resolution: {integrity: sha512-swi0NM+dpZCldXkMGS8wCxvoiRgA0PJw0UQeSTA7PqB2/5LsOQ8pmxyqLPE6YsbEdn0XqI9a7QgKOmmElkaMOA==} + dependencies: + '@volar/typescript': 1.7.6 + '@vue/language-core': 1.8.0(typescript@5.1.3) + transitivePeerDependencies: + - typescript + dev: true + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true @@ -2496,6 +2548,10 @@ packages: engines: {node: '>= 12'} dev: true + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -3527,6 +3583,11 @@ packages: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} dev: true + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + /hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} dev: true @@ -4478,6 +4539,10 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4797,7 +4862,7 @@ packages: fsevents: 2.3.2 dev: true - /nuxt@3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3): + /nuxt@3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue-tsc@1.8.0): resolution: {integrity: sha512-PVA+1d0UBujODogxhnfbolYFOawAf2paOVlARxJdm1npVQBPz9Ns8tKpWglbZhwRdXpj1jDE9Dl+Ke3pl59dZw==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true @@ -4813,7 +4878,7 @@ packages: '@nuxt/schema': 3.5.2 '@nuxt/telemetry': 2.2.0 '@nuxt/ui-templates': 1.1.1 - '@nuxt/vite-builder': 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue@3.3.4) + '@nuxt/vite-builder': 3.5.2(@types/node@20.2.5)(eslint@8.42.0)(typescript@5.1.3)(vue-tsc@1.8.0)(vue@3.3.4) '@types/node': 20.2.5 '@unhead/ssr': 1.1.27 '@unhead/vue': 1.1.27(vue@3.3.4) @@ -6607,7 +6672,7 @@ packages: - terser dev: true - /vite-plugin-checker@0.6.0(eslint@8.42.0)(typescript@5.1.3)(vite@4.3.9): + /vite-plugin-checker@0.6.0(eslint@8.42.0)(typescript@5.1.3)(vite@4.3.9)(vue-tsc@1.8.0): resolution: {integrity: sha512-DWZ9Hv2TkpjviPxAelNUt4Q3IhSGrx7xrwdM64NI+Q4dt8PaMWJJh4qGNtSrfEuiuIzWWo00Ksvh5It4Y3L9xQ==} engines: {node: '>=14.16'} peerDependencies: @@ -6658,6 +6723,7 @@ packages: vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.8 vscode-uri: 3.0.7 + vue-tsc: 1.8.0(typescript@5.1.3) dev: true /vite-plugin-inspect@0.7.28(vite@4.3.9): @@ -6808,6 +6874,26 @@ packages: vue: 3.3.4 dev: true + /vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.0(typescript@5.1.3): + resolution: {integrity: sha512-zRjRghohec71o+o3dzzqwFLtbKmJ1K1xRnq9ToHRdnHbBSZA2eUaTT1o+y4xOkBLZtW4cv7FkZE0FGCZfMrcBw==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@vue/language-core': 1.8.0(typescript@5.1.3) + '@vue/typescript': 1.8.0(typescript@5.1.3) + semver: 7.5.1 + typescript: 5.1.3 + vscode-uri: 3.0.7 + dev: true + /vue@3.3.4: resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} dependencies: From c76f9ce2d45886f9f932a09ecb5d894f4d026bc3 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Mon, 19 Jun 2023 14:45:29 -0400 Subject: [PATCH 2/2] Add GH action for typechecking --- .github/workflows/typecheck.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/typecheck.yaml diff --git a/.github/workflows/typecheck.yaml b/.github/workflows/typecheck.yaml new file mode 100644 index 00000000..021c62d9 --- /dev/null +++ b/.github/workflows/typecheck.yaml @@ -0,0 +1,30 @@ +name: Check + +on: + push: + branches: + - main + pull_request: + branches: + - main + +concurrency: + group: check-${{ github.ref }} + cancel-in-progress: true + +env: + NODE_OPTIONS: --max_old_space_size=6144 + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Prepare + uses: ./.github/actions/prepare + + - name: Run Typechecker + run: pnpm typecheck