]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
fix: avoid npm bug when resolving optional deps (#2841)
authorEduardo San Martin Morote <posva@users.noreply.github.com>
Mon, 2 Dec 2024 10:25:58 +0000 (11:25 +0100)
committerGitHub <noreply@github.com>
Mon, 2 Dec 2024 10:25:58 +0000 (11:25 +0100)
README.md
packages/pinia/package.json
packages/pinia/src/store.ts
pnpm-lock.yaml
rollup.config.mjs

index c19a92a725c45449af0d10c14ab8b60f4bbe85fe..39470299cc7ca84d448d4783cf15ed14521765ec 100644 (file)
--- a/README.md
+++ b/README.md
@@ -111,12 +111,6 @@ A few notes about the project and possible questions:
 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
index d44889302b3f741356d6928070e81648031d65e2..fafdc27156c0fbc2a0f232bed205f370a2f4db55 100644 (file)
     "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": {
index 617645c152f332c7616e5ed9f7269b3d00f2053d..a09196a4e50ca73e18fc2e57e644ae6855cb35e3 100644 (file)
@@ -117,7 +117,6 @@ function mergeReactiveObjects<
 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
@@ -127,10 +126,7 @@ const skipHydrateMap = /*#__PURE__*/ new WeakMap<any, any>()
  * @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, {})
 }
 
 /**
@@ -140,9 +136,7 @@ export function skipHydrate<T = any>(obj: T): T {
  * @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
index f5b2560fbae182196f03f0c448a13180611abe3a..bafe9e7a9b686a9d0c36a5a0ae9b39d672b27cf3 100644 (file)
@@ -191,9 +191,6 @@ importers:
 
   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
@@ -201,7 +198,7 @@ importers:
         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
@@ -7022,6 +7019,7 @@ snapshots:
   '@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': {}
 
index 74019ed0619f24e74e8ad32cbdf1c099648a2adc..e829bb16655ee963449584945a2a57ccf371ce16 100644 (file)
@@ -96,7 +96,6 @@ function createConfig(buildName, output, plugins = []) {
   output.globals = {
     'vue-demi': 'VueDemi',
     vue: 'Vue',
-    '@vue/composition-api': 'vueCompositionApi',
   }
 
   const isProductionBuild = /\.prod\.[cm]?js$/.test(output.file)
@@ -127,7 +126,7 @@ function createConfig(buildName, output, plugins = []) {
   // 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)