diff --git a/packages/example/composables/dog.ts b/packages/example/composables/dog.ts new file mode 100644 index 00000000..2c8c6c1c --- /dev/null +++ b/packages/example/composables/dog.ts @@ -0,0 +1,32 @@ +type Dog = { + breed: string; + name: string; + age: number; +}; + +export const useDog = async () => { + const app = useNuxtApp(); + + // fetch Dog data + await new Promise((res) => setTimeout(res, 100)); + const dog: Dog = { + breed: 'Golden Retriever', + name: 'Buddy', + age: 5, + }; + + // Note: This jsonld will not disappear even after page transition. + // If you want to link it to the page, use useJsonld in the component side. + app.runWithContext(() => { + useJsonld(() => ({ + '@context': 'https://schema.org', + '@type': 'Thing', + name: dog.name, + description: `A ${dog.breed} dog: not linked to the page`, + })); + }); + + return { + dog, + }; +}; diff --git a/packages/example/nuxt.config.ts b/packages/example/nuxt.config.ts index 576f3c87..ad0f5011 100644 --- a/packages/example/nuxt.config.ts +++ b/packages/example/nuxt.config.ts @@ -1,7 +1,5 @@ -import NuxtJsonld from 'nuxt-jsonld'; - export default defineNuxtConfig({ - modules: [NuxtJsonld], + modules: ['nuxt-jsonld'], css: ['@/css/index.css'], - devtools: true, + compatibilityDate: '2024-12-11', }); diff --git a/packages/example/package.json b/packages/example/package.json index 22f6c3d8..84c2b7cf 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -9,7 +9,7 @@ "start": "node ./.output/server/index.mjs" }, "dependencies": { - "nuxt": "^3.11.2" + "nuxt": "^3.12.4" }, "devDependencies": { "@nuxt/devtools": "^0.8.5" diff --git a/packages/example/pages/composable-options.vue b/packages/example/pages/composable-options.vue index 6b18f187..389f06ae 100644 --- a/packages/example/pages/composable-options.vue +++ b/packages/example/pages/composable-options.vue @@ -1,24 +1,21 @@ - diff --git a/packages/example/pages/context.vue b/packages/example/pages/context.vue new file mode 100644 index 00000000..c7149411 --- /dev/null +++ b/packages/example/pages/context.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/packages/example/pages/index.vue b/packages/example/pages/index.vue index f7649465..3c066fa8 100644 --- a/packages/example/pages/index.vue +++ b/packages/example/pages/index.vue @@ -8,43 +8,34 @@ {{ p.name }} -
  • Static JSON
  • Options API
  • Composable API Options
  • +
  • Context
  • - diff --git a/packages/example/pages/products/[id].vue b/packages/example/pages/products/[id].vue index 2bc22233..be7c1d21 100644 --- a/packages/example/pages/products/[id].vue +++ b/packages/example/pages/products/[id].vue @@ -10,39 +10,30 @@ - diff --git a/packages/example/pages/static.vue b/packages/example/pages/static.vue deleted file mode 100644 index acb9c403..00000000 --- a/packages/example/pages/static.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/packages/nuxt-jsonld/src/module.ts b/packages/nuxt-jsonld/src/module.ts index 2cb741c6..dfdd70ed 100644 --- a/packages/nuxt-jsonld/src/module.ts +++ b/packages/nuxt-jsonld/src/module.ts @@ -2,6 +2,7 @@ import { resolve } from 'pathe'; import { defineNuxtModule, addPlugin, addImports } from '@nuxt/kit'; import type { Nuxt } from '@nuxt/schema'; import type { JsonLDFunc } from './types'; +export type { JsonLD, JsonLDFunc } from './types'; export type { UseJsonldOptions } from './runtime/composable'; diff --git a/packages/nuxt-jsonld/src/runtime/composable.ts b/packages/nuxt-jsonld/src/runtime/composable.ts index 1c98ac59..4b174835 100644 --- a/packages/nuxt-jsonld/src/runtime/composable.ts +++ b/packages/nuxt-jsonld/src/runtime/composable.ts @@ -4,6 +4,7 @@ import { useHead, type UseHeadOptions } from '@unhead/vue'; const isFunc = (json: JsonLD | JsonLDFunc): json is JsonLDFunc => typeof json === 'function'; export type UseJsonldOptions = Pick; +export type { JsonLD, JsonLDFunc } from '../types'; export const useJsonld = (json: JsonLD | JsonLDFunc, options?: UseJsonldOptions) => { if (!json) { diff --git a/packages/nuxt-jsonld/src/types/index.d.ts b/packages/nuxt-jsonld/src/types/index.ts similarity index 100% rename from packages/nuxt-jsonld/src/types/index.d.ts rename to packages/nuxt-jsonld/src/types/index.ts diff --git a/yarn.lock b/yarn.lock index 5109e978..066010a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7553,7 +7553,7 @@ nuxi@^3.15.0: resolved "https://registry.yarnpkg.com/nuxi/-/nuxi-3.15.0.tgz#ed54923ca46727c6e7df10495143db340d9791c9" integrity sha512-ZVu45nuDrdb7nzKW2kLGY/N1vvFYLLbUVX6gUYw4BApKGGu4+GktTR5o48dGVgMYX9A8chaugl7TL9ZYmwC9Mg== -nuxt@^3.11.2: +nuxt@^3.11.2, nuxt@^3.12.4: version "3.14.1592" resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-3.14.1592.tgz#0f94132b7e0ffe9087b37392f295e2c7d5d05ee3" integrity sha512-roWAQH4Mb6WY72cNos+YVw0DgTCNAhNygiAMCedM7hbX6ESTR2n3VH7tU0yIWDPe/hfFdii4M4wWTTNHOtS44g==