Skip to content

Commit c2f7c9c

Browse files
committed
fix: broken registry types
Fixes #419
1 parent 9b656bc commit c2f7c9c

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

src/runtime/composables/useScript.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@ import type { UseScriptInput, UseScriptOptions, VueScriptInstance } from '@unhea
22
import { defu } from 'defu'
33
import { useScript as _useScript } from '@unhead/vue/scripts'
44
import { reactive } from 'vue'
5-
import type { NuxtDevToolsScriptInstance, NuxtUseScriptOptions, UseScriptContext } from '../types'
5+
import type { NuxtDevToolsScriptInstance, NuxtUseScriptOptions, UseFunctionType, UseScriptContext } from '../types'
66
import { onNuxtReady, useNuxtApp, useRuntimeConfig, injectHead } from '#imports'
77

8-
type UseFunctionType<T, U> = T extends {
9-
use: infer V
10-
} ? V extends (...args: any) => any ? ReturnType<V> : U : U
11-
128
function useNuxtScriptRuntimeConfig() {
139
return useRuntimeConfig().public['nuxt-scripts'] as {
1410
defaultScriptOptions: NuxtUseScriptOptions

src/runtime/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ export type NuxtConfigScriptRegistry<T extends keyof ScriptRegistry = keyof Scri
168168
[key in T]: NuxtConfigScriptRegistryEntry<ScriptRegistry[key]>
169169
}>
170170

171+
export type UseFunctionType<T, U> = T extends {
172+
use: infer V
173+
} ? V extends (...args: any) => any ? ReturnType<V> : U : U
174+
175+
171176
const _emptyOptions = object({})
172177

173178
export type EmptyOptionsSchema = typeof _emptyOptions

src/runtime/utils.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ import { defu } from 'defu'
22
import type { GenericSchema, InferInput, ObjectSchema, ValiError } from 'valibot'
33
import type { UseScriptInput } from '@unhead/vue'
44
import { useRuntimeConfig } from 'nuxt/app'
5-
import { useScript } from '#imports'
5+
import { useScript } from './composables/useScript'
66
import { parse } from '#nuxt-scripts-validator'
77
import type {
88
EmptyOptionsSchema,
99
InferIfSchema,
1010
NuxtUseScriptOptions,
1111
RegistryScriptInput,
12-
ScriptRegistry,
12+
UseFunctionType,
13+
ScriptRegistry, UseScriptContext,
1314
} from '#nuxt-scripts/types'
1415

1516
export type MaybePromise<T> = Promise<T> | T
@@ -39,7 +40,7 @@ export function scriptRuntimeConfig<T extends keyof ScriptRegistry>(key: T) {
3940
return ((useRuntimeConfig().public.scripts || {}) as ScriptRegistry)[key]
4041
}
4142

42-
export function useRegistryScript<T extends Record<string | symbol, any>, O = EmptyOptionsSchema, U = {}>(registryKey: keyof ScriptRegistry | string, optionsFn: OptionsFn<O>, _userOptions?: RegistryScriptInput<O>) {
43+
export function useRegistryScript<T extends Record<string | symbol, any>, O = EmptyOptionsSchema, U = {}>(registryKey: keyof ScriptRegistry | string, optionsFn: OptionsFn<O>, _userOptions?: RegistryScriptInput<O>): UseScriptContext<UseFunctionType<NuxtUseScriptOptions<T>, T>> {
4344
const scriptConfig = scriptRuntimeConfig(registryKey as keyof ScriptRegistry)
4445
const userOptions = Object.assign(_userOptions || {}, typeof scriptConfig === 'object' ? scriptConfig : {})
4546
const options = optionsFn(userOptions as InferIfSchema<O>)

0 commit comments

Comments
 (0)