feat: remove custom async data error handler

This commit is contained in:
wobsoriano
2022-11-04 07:37:08 -07:00
parent ffb692a168
commit 1dc0ca7808
3 changed files with 5 additions and 325 deletions

View File

@@ -16,6 +16,6 @@
"zod": "^3.19.1"
},
"devDependencies": {
"nuxt": "3.0.0-rc.12"
"nuxt": "3.0.0-rc.13"
}
}

304
pnpm-lock.yaml generated
View File

@@ -51,7 +51,7 @@ importers:
specifiers:
'@trpc/client': 10.0.0-rc.3
'@trpc/server': 10.0.0-rc.3
nuxt: 3.0.0-rc.12
nuxt: 3.0.0-rc.13
superjson: ^1.11.0
trpc-nuxt: workspace:*
zod: ^3.19.1
@@ -62,7 +62,7 @@ importers:
trpc-nuxt: link:..
zod: 3.19.1
devDependencies:
nuxt: 3.0.0-rc.12
nuxt: 3.0.0-rc.13
packages:
@@ -1025,32 +1025,6 @@ packages:
resolution: {integrity: sha512-YBI/6o2EBz02tdEJRBK8xkt3zvOFOWlLBf7WKYGBsSYSRtjjgrqPe2skp6VLLmKx5WbHHDNcW+6oACaurxGzeA==}
dev: true
/@nuxt/kit/3.0.0-rc.12:
resolution: {integrity: sha512-d/6SeNVL1OPdru5aKjjUIWIwqIjbYN/VYGCrZs5gddkzJ5202DsMxyn2rs/ZyT8+oBbbVTYcCK6M+G0945mQdA==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0}
dependencies:
'@nuxt/schema': 3.0.0-rc.12
c12: 0.2.13
consola: 2.15.3
defu: 6.1.0
globby: 13.1.2
hash-sum: 2.0.0
ignore: 5.2.0
jiti: 1.16.0
knitwork: 0.1.2
lodash.template: 4.5.0
mlly: 0.5.16
pathe: 0.3.9
pkg-types: 0.3.6
scule: 0.3.2
semver: 7.3.8
unctx: 2.0.2
unimport: 0.6.8
untyped: 0.5.0
transitivePeerDependencies:
- supports-color
dev: true
/@nuxt/kit/3.0.0-rc.13:
resolution: {integrity: sha512-FYEnMRm4LvIUxygmBX/p5kykzSeBleUqCOfxervQFONkz5PVVYXEp1DDBINGR3xk01yuPElENuf+l59iEQ4q7g==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0}
@@ -1120,26 +1094,6 @@ packages:
- webpack
dev: true
/@nuxt/schema/3.0.0-rc.12:
resolution: {integrity: sha512-LZFy8a+5tZKtqTHvUJrlCjZXmKPSmar4S/p3SpjzgIbc4jDuWzA5r4voUODozd2/bCnYxfYyNtOgtbJSJtDUrw==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0}
dependencies:
c12: 0.2.13
create-require: 1.1.1
defu: 6.1.0
jiti: 1.16.0
pathe: 0.3.9
pkg-types: 0.3.6
postcss-import-resolver: 2.0.0
scule: 0.3.2
std-env: 3.3.0
ufo: 0.8.6
unimport: 0.6.8
untyped: 0.5.0
transitivePeerDependencies:
- supports-color
dev: true
/@nuxt/schema/3.0.0-rc.13:
resolution: {integrity: sha512-yfNPvUkOQ1/8aKHX8OtU7stANAaZ3B8Rty7HPuo1KHv0R3wNqlRdoRXwFuf4D+jcsS+R5Kccr7i8YYD5IG56Iw==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0}
@@ -1215,59 +1169,6 @@ packages:
resolution: {integrity: sha512-oFjUfn9r9U4vNljd5uU08+6M3mF6OSxZfCrfqJQaN5TtqVTcZmZFzOZ4H866Lq+Eaugv/Vte225kuaZCB3FR/g==}
dev: true
/@nuxt/vite-builder/3.0.0-rc.12_vue@3.2.41:
resolution: {integrity: sha512-1jzEg2+Er9fzir8NvVnHAU8N4xda8IVzmqQQblKDWDE4v+zD5QLwk4Fp+l9Y74BZgH7pTogVSvEA01WdNQQUlw==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0}
peerDependencies:
vue: ^3.2.41
dependencies:
'@nuxt/kit': 3.0.0-rc.12
'@rollup/plugin-replace': 5.0.1_rollup@2.79.1
'@vitejs/plugin-vue': 3.2.0_vite@3.1.8+vue@3.2.41
'@vitejs/plugin-vue-jsx': 2.1.0_vite@3.1.8+vue@3.2.41
autoprefixer: 10.4.13_postcss@8.4.18
chokidar: 3.5.3
cssnano: 5.1.14_postcss@8.4.18
defu: 6.1.0
esbuild: 0.15.13
escape-string-regexp: 5.0.0
estree-walker: 3.0.1
externality: 0.2.2
fs-extra: 10.1.0
get-port-please: 2.6.1
h3: 0.8.6
knitwork: 0.1.2
magic-string: 0.26.7
mlly: 0.5.16
ohash: 0.1.5
pathe: 0.3.9
perfect-debounce: 0.1.3
pkg-types: 0.3.6
postcss: 8.4.18
postcss-import: 15.0.0_postcss@8.4.18
postcss-url: 10.1.3_postcss@8.4.18
rollup: 2.79.1
rollup-plugin-visualizer: 5.8.3_rollup@2.79.1
ufo: 0.8.6
unplugin: 0.10.2
vite: 3.1.8
vite-node: 0.24.5
vite-plugin-checker: 0.5.1_vite@3.1.8
vue: 3.2.41
vue-bundle-renderer: 0.4.4
transitivePeerDependencies:
- eslint
- less
- sass
- stylus
- sugarss
- supports-color
- terser
- typescript
- vls
- vti
dev: true
/@nuxt/vite-builder/3.0.0-rc.13_5phhjlepx6uce62n7km5sehevq:
resolution: {integrity: sha512-Smd+3WtTkJxmOBP5E3D23oF1PHzDWz37uzKvBhRxUguHN83r2/mJJM2QU9ivmujMaotYU19Gn3UONBCWLvWimA==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0}
@@ -1842,14 +1743,6 @@ packages:
rollup: 2.79.1
dev: true
/@rollup/pluginutils/4.2.1:
resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
engines: {node: '>= 8.0.0'}
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
dev: true
/@rollup/pluginutils/5.0.2:
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
@@ -2213,22 +2106,6 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue-jsx/2.1.0_vite@3.1.8+vue@3.2.41:
resolution: {integrity: sha512-vvL8MHKN0hUf5LE+/rCk1rduwzW6NihD6xEfM4s1gGCSWQFYd5zLdxBs++z3S7AV/ynr7Yig5Xp1Bm0wlB4IAA==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^3.0.0
vue: ^3.0.0
dependencies:
'@babel/core': 7.19.6
'@babel/plugin-transform-typescript': 7.20.0_@babel+core@7.19.6
'@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.19.6
vite: 3.1.8
vue: 3.2.41
transitivePeerDependencies:
- supports-color
dev: true
/@vitejs/plugin-vue-jsx/2.1.0_vite@3.2.2+vue@3.2.41:
resolution: {integrity: sha512-vvL8MHKN0hUf5LE+/rCk1rduwzW6NihD6xEfM4s1gGCSWQFYd5zLdxBs++z3S7AV/ynr7Yig5Xp1Bm0wlB4IAA==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -2245,17 +2122,6 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue/3.2.0_vite@3.1.8+vue@3.2.41:
resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^3.0.0
vue: ^3.2.25
dependencies:
vite: 3.1.8
vue: 3.2.41
dev: true
/@vitejs/plugin-vue/3.2.0_vite@3.2.2+vue@3.2.41:
resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -7106,14 +6972,6 @@ packages:
boolbase: 1.0.0
dev: true
/nuxi/3.0.0-rc.12:
resolution: {integrity: sha512-jOnWe/Gf2/5Zj4wCFDHpmBPDDHZFMGrhqK5C+8jhG2RHNJy+YOlZETwAgoXPjmH0Hhb441UDQhZHKg5+yyKhbw==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: true
/nuxi/3.0.0-rc.13:
resolution: {integrity: sha512-Uh+Vk6mj0Zm5QttwdNFGQG0tjCXNjpc4e9NLRWpCjCCfBk5owBo2axxoeqfqIZMs6vUuCQCa7sLXQuoumyVjcQ==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0}
@@ -7122,71 +6980,6 @@ packages:
fsevents: 2.3.2
dev: true
/nuxt/3.0.0-rc.12:
resolution: {integrity: sha512-VhSod1u/w+C3VWsagTd5Prnsjk/VxPRt/bbADhUz3l0zxxajHRhHFX4xZSJWNgzsakducDqhn7N1pY6Ukko9kg==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0}
hasBin: true
dependencies:
'@nuxt/devalue': 2.0.0
'@nuxt/kit': 3.0.0-rc.12
'@nuxt/schema': 3.0.0-rc.12
'@nuxt/telemetry': 2.1.6
'@nuxt/ui-templates': 0.4.0
'@nuxt/vite-builder': 3.0.0-rc.12_vue@3.2.41
'@vue/reactivity': 3.2.41
'@vue/shared': 3.2.41
'@vueuse/head': 1.0.0-rc.14_vue@3.2.41
chokidar: 3.5.3
cookie-es: 0.5.0
defu: 6.1.0
destr: 1.2.0
escape-string-regexp: 5.0.0
fs-extra: 10.1.0
globby: 13.1.2
h3: 0.8.6
hash-sum: 2.0.0
hookable: 5.4.1
knitwork: 0.1.2
magic-string: 0.26.7
mlly: 0.5.16
nitropack: 0.6.1
nuxi: 3.0.0-rc.12
ohash: 0.1.5
ohmyfetch: 0.4.21
pathe: 0.3.9
perfect-debounce: 0.1.3
scule: 0.3.2
strip-literal: 0.4.2
ufo: 0.8.6
ultrahtml: 0.4.0
unctx: 2.0.2
unenv: 0.6.2
unimport: 0.6.8
unplugin: 0.10.2
untyped: 0.5.0
vue: 3.2.41
vue-bundle-renderer: 0.4.4
vue-devtools-stub: 0.1.0
vue-router: 4.1.6_vue@3.2.41
transitivePeerDependencies:
- '@vue/composition-api'
- bufferutil
- debug
- encoding
- eslint
- less
- rollup
- sass
- stylus
- sugarss
- supports-color
- terser
- typescript
- utf-8-validate
- vls
- vti
dev: true
/nuxt/3.0.0-rc.13:
resolution: {integrity: sha512-iqAwrYzFuKK5HuJRa1XQ/K2WUYdOI7JjxYLWAJyAejzvUO/+Pj87fhqozzymlJxrdKM53UqBfur+KN+DE0nRzw==}
engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0}
@@ -8644,14 +8437,6 @@ packages:
estree-walker: 0.6.1
dev: true
/rollup/2.78.1:
resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: true
/rollup/2.79.1:
resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
engines: {node: '>=10.0.0'}
@@ -9618,21 +9403,6 @@ packages:
vfile: 5.3.5
dev: true
/unimport/0.6.8:
resolution: {integrity: sha512-MWkaPYvN0j+6jfEuiVFhfmy+aOtgAP11CozSbu/I3Cx+8ybjXIueB7GVlKofHabtjzSlPeAvWKJSFjHWsG2JaA==}
dependencies:
'@rollup/pluginutils': 4.2.1
escape-string-regexp: 5.0.0
fast-glob: 3.2.12
local-pkg: 0.4.2
magic-string: 0.26.7
mlly: 0.5.16
pathe: 0.3.9
scule: 0.3.2
strip-literal: 0.4.2
unplugin: 0.9.6
dev: true
/unimport/0.7.0:
resolution: {integrity: sha512-Cr0whz4toYVid3JHlni/uThwavDVVCk6Zw0Gxnol1c7DprTA+Isr4T+asO6rDGkhkgV7r3vSdSs5Ym8F15JA+w==}
dependencies:
@@ -9918,43 +9688,6 @@ packages:
vscode-uri: 3.0.6
dev: true
/vite-plugin-checker/0.5.1_vite@3.1.8:
resolution: {integrity: sha512-NFiO1PyK9yGuaeSnJ7Whw9fnxLc1AlELnZoyFURnauBYhbIkx9n+PmIXxSFUuC9iFyACtbJQUAEuQi6yHs2Adg==}
engines: {node: '>=14.16'}
peerDependencies:
eslint: '>=7'
typescript: '*'
vite: ^2.0.0 || ^3.0.0-0
vls: '*'
vti: '*'
peerDependenciesMeta:
eslint:
optional: true
typescript:
optional: true
vls:
optional: true
vti:
optional: true
dependencies:
'@babel/code-frame': 7.18.6
ansi-escapes: 4.3.2
chalk: 4.1.2
chokidar: 3.5.3
commander: 8.3.0
fast-glob: 3.2.12
lodash.debounce: 4.0.8
lodash.pick: 4.4.0
npm-run-path: 4.0.1
strip-ansi: 6.0.1
tiny-invariant: 1.3.1
vite: 3.1.8
vscode-languageclient: 7.0.0
vscode-languageserver: 7.0.0
vscode-languageserver-textdocument: 1.0.7
vscode-uri: 3.0.6
dev: true
/vite-plugin-checker/0.5.1_vite@3.2.2:
resolution: {integrity: sha512-NFiO1PyK9yGuaeSnJ7Whw9fnxLc1AlELnZoyFURnauBYhbIkx9n+PmIXxSFUuC9iFyACtbJQUAEuQi6yHs2Adg==}
engines: {node: '>=14.16'}
@@ -9992,33 +9725,6 @@ packages:
vscode-uri: 3.0.6
dev: true
/vite/3.1.8:
resolution: {integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
less: '*'
sass: '*'
stylus: '*'
terser: ^5.4.0
peerDependenciesMeta:
less:
optional: true
sass:
optional: true
stylus:
optional: true
terser:
optional: true
dependencies:
esbuild: 0.15.13
postcss: 8.4.18
resolve: 1.22.1
rollup: 2.78.1
optionalDependencies:
fsevents: 2.3.2
dev: true
/vite/3.2.2:
resolution: {integrity: sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -10089,12 +9795,6 @@ packages:
resolution: {integrity: sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==}
dev: true
/vue-bundle-renderer/0.4.4:
resolution: {integrity: sha512-kjJWPayzup8QFynETVpoYD0gDM2nbwN//bpt86hAHpZ+FPdTJFDQqKpouSLQgb2XjkOYM1uB/yc6Zb3iCvS7Gw==}
dependencies:
ufo: 0.8.6
dev: true
/vue-bundle-renderer/0.5.0:
resolution: {integrity: sha512-EZBp4TZ5oamgg+JL7kih5xO/qLCPlC6Dz4BH9ymoNP6xM2urZazql3PCAdztgnzBkOgmoOegEw4kp7Hgp8qaaA==}
dependencies:

View File

@@ -9,7 +9,7 @@ import { getCurrentInstance, onScopeDispose } from 'vue'
import { nanoid } from 'nanoid'
import type { DecoratedProcedureRecord } from './types'
// @ts-expect-error: Nuxt auto-imports
import { useAsyncData, useState } from '#imports'
import { useAsyncData } from '#imports'
/**
* Calculates the key used for `useAsyncData` call
@@ -49,33 +49,13 @@ function createNuxtProxyDecoration<TRouter extends AnyRouter>(name: string, clie
controller = typeof AbortController !== 'undefined' ? new AbortController() : {} as AbortController
}
return useAsyncDataWithError(queryKey, () => (client as any)[path][lastArg](input, {
return useAsyncData(queryKey, () => (client as any)[path][lastArg](input, {
signal: controller?.signal,
...trpc,
}), asyncDataOptions)
})
}
/**
* Custom useAsyncData to add server error to client
*/
async function useAsyncDataWithError(queryKey: string, cb: any, asyncDataOptions: any) {
const serverError = useState(`error-${queryKey}`, () => null)
const { error, data, ...rest } = await useAsyncData(queryKey, cb, asyncDataOptions)
if (error.value && !serverError.value)
serverError.value = error.value as any
if (data.value)
serverError.value = null
return {
...rest,
data,
error: serverError,
}
}
export function createTRPCNuxtProxyClient<TRouter extends AnyRouter>(opts: CreateTRPCClientOptions<TRouter>) {
const client = createTRPCProxyClient(opts)