npm install pinia
```
-If you are using Vue <2.7, make sure to install latest `@vue/composition-api`:
-
-```bash
-npm install pinia @vue/composition-api
-```
-
## Usage
### Install the plugin
"vue-demi": "^0.14.10"
},
"peerDependencies": {
- "@vue/composition-api": "^1.4.0",
"typescript": ">=4.4.4",
- "vue": "^2.6.14 || ^3.5.11"
+ "vue": "^2.7.0 || ^3.5.11"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
- },
- "@vue/composition-api": {
- "optional": true
}
},
"repository": {
const skipHydrateSymbol = __DEV__
? Symbol('pinia:skipHydration')
: /* istanbul ignore next */ Symbol()
-const skipHydrateMap = /*#__PURE__*/ new WeakMap<any, any>()
/**
* Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a
* @returns obj
*/
export function skipHydrate<T = any>(obj: T): T {
- return isVue2
- ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...
- /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj
- : Object.defineProperty(obj, skipHydrateSymbol, {})
+ return Object.defineProperty(obj, skipHydrateSymbol, {})
}
/**
* @returns true if `obj` should be hydrated
*/
export function shouldHydrate(obj: any) {
- return isVue2
- ? /* istanbul ignore next */ !skipHydrateMap.has(obj)
- : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol)
+ return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol)
}
const { assign } = Object
packages/pinia:
dependencies:
- '@vue/composition-api':
- specifier: ^1.4.0
- version: 1.7.2(vue@3.5.13(typescript@5.6.3))
'@vue/devtools-api':
specifier: ^6.6.3
version: 6.6.4
specifier: '>=4.4.4'
version: 5.6.3
vue:
- specifier: ^2.6.14 || ^3.5.11
+ specifier: ^2.7.0 || ^3.5.11
version: 3.5.13(typescript@5.6.3)
vue-demi:
specifier: ^0.14.10
'@vue/composition-api@1.7.2(vue@3.5.13(typescript@5.6.3))':
dependencies:
vue: 3.5.13(typescript@5.6.3)
+ optional: true
'@vue/devtools-api@6.6.4': {}
output.globals = {
'vue-demi': 'VueDemi',
vue: 'Vue',
- '@vue/composition-api': 'vueCompositionApi',
}
const isProductionBuild = /\.prod\.[cm]?js$/.test(output.file)
// during a single build.
hasTSChecked = true
- const external = ['vue-demi', 'vue', '@vue/composition-api']
+ const external = ['vue-demi', 'vue']
if (
!isGlobalBuild &&
// pinia.prod.cjs should not require `@vue/devtools-api` (like Vue)