import { getContext } from 'unctx' import type { Nuxt } from '@nuxt/schema' /** Direct access to the Nuxt context - see https://github.com/unjs/unctx. */ export const nuxtCtx = getContext('nuxt') // TODO: Use use/tryUse from unctx. https://github.com/unjs/unctx/issues/6 /** * Get access to Nuxt instance. * * Throws an error if Nuxt instance is unavailable. * * @example * ```js * const nuxt = useNuxt() * ``` */ export function useNuxt (): Nuxt { const instance = nuxtCtx.use() if (!instance) { throw new Error('Nuxt instance is unavailable!') } return instance } /** * Get access to Nuxt instance. * * Returns null if Nuxt instance is unavailable. * * @example * ```js * const nuxt = tryUseNuxt() * if (nuxt) { * // Do something * } * ``` */ export function tryUseNuxt (): Nuxt | null { return nuxtCtx.use() }