From a5e39a53bcfee2f57485de76838955a37ee64ea3 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Fri, 8 Jul 2022 17:12:26 +0200 Subject: [PATCH] wip: add incomplete missing types --- packages/nuxt/src/runtime/plugin.vue2.ts | 17 +++++++++++++++++ packages/nuxt/src/runtime/plugin.vue3.ts | 16 ++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/packages/nuxt/src/runtime/plugin.vue2.ts b/packages/nuxt/src/runtime/plugin.vue2.ts index 085ee9c0..c7f848e0 100644 --- a/packages/nuxt/src/runtime/plugin.vue2.ts +++ b/packages/nuxt/src/runtime/plugin.vue2.ts @@ -10,6 +10,13 @@ export default (context: any, inject: any) => { context.app.pinia = pinia setActivePinia(pinia) + // add access to `$nuxt` + // @ts-expect-error: _p is internal + pinia._p.push(({ store }) => { + // make it non enumerable so it avoids any serialization and devtools + Object.defineProperty(store, '$nuxt', { value: context }) + }) + if (process.server) { context.beforeNuxtRender((ctx: any) => { ctx.nuxtState.pinia = pinia.state.value @@ -21,3 +28,13 @@ export default (context: any, inject: any) => { // Inject $pinia inject('pinia', pinia) } + +declare module 'pinia' { + export interface PiniaCustomProperties { + /** + * Nuxt context. + */ + // FIXME: where is this type? + // $nuxt: import('@nuxt/types').Context + } +} diff --git a/packages/nuxt/src/runtime/plugin.vue3.ts b/packages/nuxt/src/runtime/plugin.vue3.ts index 11d8eb21..608df03c 100644 --- a/packages/nuxt/src/runtime/plugin.vue3.ts +++ b/packages/nuxt/src/runtime/plugin.vue3.ts @@ -6,6 +6,12 @@ export default defineNuxtPlugin((nuxtApp) => { nuxtApp.vueApp.use(pinia) setActivePinia(pinia) + // @ts-expect-error: _p is internal + pinia._p.push(({ store }) => { + // make it non enumerable so it avoids any serialization and devtools + Object.defineProperty(store, '$nuxt', { value: nuxtApp }) + }) + if (process.server) { nuxtApp.payload.pinia = pinia.state.value } else if (nuxtApp.payload && nuxtApp.payload.pinia) { @@ -19,3 +25,13 @@ export default defineNuxtPlugin((nuxtApp) => { }, } }) + +declare module 'pinia' { + export interface PiniaCustomProperties { + /** + * Nuxt context. + */ + // FIXME: where is this type? + // $nuxt: import('@nuxt/types').Context + } +} -- 2.47.2