fix: resolve all TypeScript type errors

- Install missing comlink (was in lockfile but not node_modules)
- Add @ts-rest/core and @ts-rest/vue-query (imported but not declared as deps)
- Add declare module '*.vue' shim to shims-vue.d.ts
- Replace arktype validators in ts-rest contract with contract.type<T>() since @ts-rest expects Zod schemas
This commit is contained in:
Julien Calixte
2026-04-06 15:05:57 +02:00
parent 8d9134a062
commit f3e74aed34
4 changed files with 52 additions and 17 deletions

View File

@@ -28,6 +28,8 @@
"@tailwindcss/postcss": "^4.1.16", "@tailwindcss/postcss": "^4.1.16",
"@tanstack/vue-query": "^5.92.9", "@tanstack/vue-query": "^5.92.9",
"@toycode/markdown-it-class": "^1.2.4", "@toycode/markdown-it-class": "^1.2.4",
"@ts-rest/core": "^3.52.1",
"@ts-rest/vue-query": "^3.52.1",
"@vscode/markdown-it-katex": "^1.1.2", "@vscode/markdown-it-katex": "^1.1.2",
"@vueuse/components": "^14.2.1", "@vueuse/components": "^14.2.1",
"@vueuse/core": "^13.6.0", "@vueuse/core": "^13.6.0",

39
pnpm-lock.yaml generated
View File

@@ -38,6 +38,12 @@ importers:
'@toycode/markdown-it-class': '@toycode/markdown-it-class':
specifier: ^1.2.4 specifier: ^1.2.4
version: 1.2.4 version: 1.2.4
'@ts-rest/core':
specifier: ^3.52.1
version: 3.52.1(@types/node@22.15.24)(zod@3.25.76)
'@ts-rest/vue-query':
specifier: ^3.52.1
version: 3.52.1(@tanstack/vue-query@5.92.9(vue@3.5.18(typescript@5.9.3)))(@ts-rest/core@3.52.1(@types/node@22.15.24)(zod@3.25.76))(zod@3.25.76)
'@vscode/markdown-it-katex': '@vscode/markdown-it-katex':
specifier: ^1.1.2 specifier: ^1.1.2
version: 1.1.2 version: 1.1.2
@@ -2112,6 +2118,27 @@ packages:
'@toycode/markdown-it-class@1.2.4': '@toycode/markdown-it-class@1.2.4':
resolution: {integrity: sha512-hA4gHBK8moObkOYdWTjhy1wYcYy0MJeM3JjSKbsXHRpRMvIKhk6Jm+t3bXsSScTdz/byWqQbs8YIwVYjHp+SlQ==} resolution: {integrity: sha512-hA4gHBK8moObkOYdWTjhy1wYcYy0MJeM3JjSKbsXHRpRMvIKhk6Jm+t3bXsSScTdz/byWqQbs8YIwVYjHp+SlQ==}
'@ts-rest/core@3.52.1':
resolution: {integrity: sha512-tAjz7Kxq/grJodcTA1Anop4AVRDlD40fkksEV5Mmal88VoZeRKAG8oMHsDwdwPZz+B/zgnz0q2sF+cm5M7Bc7g==}
peerDependencies:
'@types/node': ^18.18.7 || >=20.8.4
zod: ^3.22.3
peerDependenciesMeta:
'@types/node':
optional: true
zod:
optional: true
'@ts-rest/vue-query@3.52.1':
resolution: {integrity: sha512-89u7aS9LGDC7uNUC5CagWX1EB7vTwyXohYcizLi1D9v7MD/Cnu5OTQNf8SY3PuAK62RcFJXB2XZGsMAPC0svNw==}
peerDependencies:
'@tanstack/vue-query': ^4.0.0
'@ts-rest/core': ~3.52.0
zod: ^3.22.3
peerDependenciesMeta:
zod:
optional: true
'@tybys/wasm-util@0.10.1': '@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
@@ -8400,6 +8427,18 @@ snapshots:
'@toycode/markdown-it-class@1.2.4': {} '@toycode/markdown-it-class@1.2.4': {}
'@ts-rest/core@3.52.1(@types/node@22.15.24)(zod@3.25.76)':
optionalDependencies:
'@types/node': 22.15.24
zod: 3.25.76
'@ts-rest/vue-query@3.52.1(@tanstack/vue-query@5.92.9(vue@3.5.18(typescript@5.9.3)))(@ts-rest/core@3.52.1(@types/node@22.15.24)(zod@3.25.76))(zod@3.25.76)':
dependencies:
'@tanstack/vue-query': 5.92.9(vue@3.5.18(typescript@5.9.3))
'@ts-rest/core': 3.52.1(@types/node@22.15.24)(zod@3.25.76)
optionalDependencies:
zod: 3.25.76
'@tybys/wasm-util@0.10.1': '@tybys/wasm-util@0.10.1':
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1

View File

@@ -29,31 +29,19 @@ export const noteRouter = contract.router({
noteLists: { noteLists: {
method: "GET", method: "GET",
path: "/notes", path: "/notes",
query: type({ query: contract.type<{ cursor?: string; limit?: number }>(),
cursor: "string | undefined",
limit: "number | undefined"
}),
responses: { responses: {
200: type({ 200: contract.type<{ notes: PublicNoteListItem[] }>()
notes: PublicNoteListItem.array()
})
}, },
summary: "List all notes" summary: "List all notes"
}, },
noteListsByDid: { noteListsByDid: {
method: "GET", method: "GET",
path: "/:did/notes", path: "/:did/notes",
pathParams: type({ pathParams: contract.type<{ did: string }>(),
did: "string" query: contract.type<{ cursor?: string; limit?: number }>(),
}),
query: type({
cursor: "string | undefined",
limit: "number | undefined"
}),
responses: { responses: {
200: type({ 200: contract.type<{ notes: PublicNoteListItem[] }>()
notes: PublicNoteListItem.array()
})
}, },
summary: "List all notes" summary: "List all notes"
} }

6
src/shims-vue.d.ts vendored
View File

@@ -1,3 +1,9 @@
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}
declare module "pouchdb-adapter-indexeddb" declare module "pouchdb-adapter-indexeddb"
declare module "@toycode/markdown-it-class" declare module "@toycode/markdown-it-class"
declare module "markdown-it-block-embed" declare module "markdown-it-block-embed"