Skip to content

Commit 0fcb59a

Browse files
authored
fix(devtools): update client for unhead v3 and restore $fetch types (#1077)
1 parent 39a6dbb commit 0fcb59a

9 files changed

Lines changed: 181 additions & 127 deletions

File tree

‎packages/devtools/client/components/OpenGraphMissingTabs.vue‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<script setup lang="ts">
2-
importtype { MetaFlatInput } from'@unhead/schema'
3-
importtype { ReactiveHead } from'@unhead/vue'
2+
importtype { MetaFlatInput, ReactiveHead } from'@unhead/vue'
43
importtype { NormalizedHeadTag } from'../../src/types'
54
import { defu } from'defu'
65
import { computed, ref } from'vue'

‎packages/devtools/client/composables/client.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
importtype{NuxtDevtoolsClient,NuxtDevtoolsHostClient,NuxtDevtoolsIframeClient}from'@nuxt/devtools-kit/types'
2-
importtype{Unhead}from'@unhead/schema'
2+
importtype{Unhead}from'@unhead/vue'
33
importtype{ComputedRef}from'vue'
44
importtype{useRoute,useRouter}from'#imports'
55
import{useColorMode}from'@vueuse/core'

‎packages/devtools/client/composables/state-commands.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importtype{$Fetch}from'ofetch'
12
importtype{MaybeRefOrGetter}from'vue'
23
import{randomStr}from'@antfu/utils'
34
import{computed,onUnmounted,reactive,toValue}from'vue'
@@ -77,7 +78,7 @@ let _nuxtDocsCommands: CommandItem[] | undefined
7778

7879
exportasyncfunctiongetNuxtDocsCommands(){
7980
if(!_nuxtDocsCommands){
80-
constlist=await$fetch<any[]>('https://nuxt.com/api/search.json',{
81+
constlist=await($fetchas$Fetch)<any[]>('https://nuxt.com/api/search.json',{
8182
query: {
8283
select: '_path,title,description,navigation',
8384
},

‎packages/devtools/client/composables/state-modules.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importtype{$Fetch}from'ofetch'
12
importtype{InstalledModuleInfo,ModuleStaticInfo}from'../../src/types'
23
import{computed}from'vue'
34
import{$fetch,useState}from'#imports'
@@ -16,7 +17,7 @@ const ignoredModules = [
1617

1718
exportfunctionuseModulesList(){
1819
returnuseAsyncState('getModulesList',async()=>{
19-
constm=await$fetch<{modules: ModuleStaticInfo[]}>('https://api.nuxt.com/modules?version=3')
20+
constm=await($fetchas$Fetch)<{modules: ModuleStaticInfo[]}>('https://api.nuxt.com/modules?version=3')
2021
returnm.modules
2122
.filter((item: ModuleStaticInfo)=>!ignoredModules.includes(item.npm)&&item.compatibility.nuxt.includes('>=3'))
2223
})

‎packages/devtools/client/data/open-graph.ts‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
importtype{MetaFlatInput}from'@unhead/schema'
2-
importtype{ReactiveHead}from'@unhead/vue'
1+
importtype{MetaFlatInput,ReactiveHead}from'@unhead/vue'
32

43
exportinterfaceOpenGraphTagDefine{
54
name: string

‎packages/devtools/client/pages/modules/open-graph.vue‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<script setup lang="ts">
2+
importtype { HeadTag, Unhead } from'@unhead/vue'
23
importtype { NormalizedHeadTag } from'~/../src/types/ui-state'
4+
import { resolveTags } from'@unhead/vue/utils'
35
import { computedAsync, until } from'@vueuse/core'
46
import { computed, nextTick, ref } from'vue'
57
import { definePageMeta } from'#imports'
@@ -22,10 +24,19 @@ definePageMeta({
2224
const counter =ref(0)
2325
const head =useClientHead()
2426
27+
// unhead v2 apps expose tag resolution as an async instance method; v3 removed it in
28+
// favour of the standalone `resolveTags` util, and the inspected app may be on either.
29+
asyncfunction resolveHeadTags(instance:Unhead):Promise<HeadTag[]> {
30+
const legacy =instanceasPartial<{ resolveTags: () =>Promise<HeadTag[]> }>
31+
if (typeoflegacy.resolveTags==='function')
32+
returnawaitlegacy.resolveTags()
33+
returnresolveTags(instance)
34+
}
35+
2536
const headTags =computedAsync(async () => {
2637
// eslint-disable-next-line ts/no-unused-expressions
2738
counter.value// for force refresh
28-
const tags =awaithead.value?.resolveTags()
39+
const tags =head.value?awaitresolveHeadTags(head.value) : []
2940
returntags.map((tag):NormalizedHeadTag=> {
3041
const props =tag.props|| {}
3142
if (tag.tag==='htmlAttrs'&&props.lang) {

‎packages/devtools/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
"@nuxt/test-utils": "catalog:cli",
105105
"@parcel/watcher": "catalog:buildtools",
106106
"@types/markdown-it-link-attributes": "catalog:types",
107-
"@unhead/schema": "catalog:types",
107+
"@unhead/vue": "catalog:frontend",
108108
"@unocss/nuxt": "catalog:buildtools",
109109
"@unocss/preset-icons": "catalog:buildtools",
110110
"@unocss/preset-uno": "catalog:buildtools",

‎pnpm-lock.yaml‎

Lines changed: 160 additions & 117 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎pnpm-workspace.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ catalogs:
8686
vue-tsc: ^3.3.9
8787
frontend:
8888
'@antfu/utils': ^9.3.0
89+
'@unhead/vue': ^3.2.3
8990
'@unocss/reset': ^66.7.5
9091
'@unocss/runtime': ^66.7.5
9192
'@vue/devtools-applet': ^8.2.1
@@ -169,6 +170,5 @@ catalogs:
169170
'@types/node': ^25.9.5
170171
'@types/which': ^3.0.4
171172
'@types/ws': ^8.18.1
172-
'@unhead/schema': ^2.1.16
173173
'@vitejs/devtools-kit': ^0.4.10
174174
unimport: ^6.4.0

0 commit comments

Comments
 (0)