From: Eduardo San Martin Morote Date: Wed, 27 Oct 2021 13:35:43 +0000 (+0200) Subject: fix(ssr): make skipHydrate compatible with @vue/composition-api X-Git-Tag: pinia@2.0.0~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=71448b008fc4517ab0036b98121a0346df75880e;p=thirdparty%2Fvuejs%2Fpinia.git fix(ssr): make skipHydrate compatible with @vue/composition-api --- diff --git a/packages/pinia/src/store.ts b/packages/pinia/src/store.ts index 0936d67e..9ab67fa0 100644 --- a/packages/pinia/src/store.ts +++ b/packages/pinia/src/store.ts @@ -74,13 +74,19 @@ function mergeReactiveObjects( } const skipHydrateSymbol = __DEV__ ? Symbol('pinia:skipHydration') : Symbol() +const skipHydrateMap = /*#__PURE__*/ new WeakMap() export function skipHydrate(obj: T): T { - return Object.defineProperty(obj, skipHydrateSymbol, {}) + return isVue2 + ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work... + skipHydrateMap.set(obj, 1) && obj + : Object.defineProperty(obj, skipHydrateSymbol, {}) } function shouldHydrate(obj: any) { - return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol) + return isVue2 + ? skipHydrateMap.has(obj) + : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol) } const { assign } = Object