浏览代码

fix(bug): #4447 (#10111)

* actually using result from deepMerge when updating settings
* replacing merge from lodash with merge from deepmerge

---------

Co-authored-by: Tienson Qin <[email protected]>
Leonardo Salgueiro 2 年之前
父节点
当前提交
5e1117ef92
共有 5 个文件被更改,包括 13 次插入3 次删除
  1. 1 0
      libs/package.json
  2. 1 1
      libs/src/LSPlugin.core.ts
  3. 1 0
      libs/src/LSPlugin.user.ts
  4. 5 2
      libs/src/helpers.ts
  5. 5 0
      libs/yarn.lock

+ 1 - 0
libs/package.json

@@ -18,6 +18,7 @@
   "dependencies": {
     "csstype": "3.1.0",
     "debug": "4.3.4",
+    "deepmerge": "4.3.1",
     "dompurify": "2.3.8",
     "eventemitter3": "4.0.7",
     "fast-deep-equal": "3.1.3",

+ 1 - 1
libs/src/LSPlugin.core.ts

@@ -91,7 +91,7 @@ class PluginSettings extends EventEmitter<'change' | 'reset'> {
       if (this._settings[k] == v) return
       this._settings[k] = v
     } else if (isObject(k)) {
-      deepMerge(this._settings, k)
+      this._settings = deepMerge(this._settings, k)
     } else {
       return
     }

+ 1 - 0
libs/src/LSPlugin.user.ts

@@ -534,6 +534,7 @@ export class LSPluginUser
       this._connected = true
 
       baseInfo = deepMerge(this._baseInfo, baseInfo)
+      this._baseInfo = baseInfo
 
       if (baseInfo?.id) {
         this._debugTag =

+ 5 - 2
libs/src/helpers.ts

@@ -2,7 +2,7 @@ import { SettingSchemaDesc, StyleString, UIOptions } from './LSPlugin'
 import { PluginLocal } from './LSPlugin.core'
 import * as nodePath from 'path'
 import DOMPurify from 'dompurify'
-import { merge } from 'lodash-es'
+import merge from 'deepmerge';
 import { snakeCase } from 'snake-case'
 import * as callables from './callable.apis'
 import EventEmitter from 'eventemitter3'
@@ -52,7 +52,10 @@ export function isObject(item: any) {
   return item === Object(item) && !Array.isArray(item)
 }
 
-export const deepMerge = merge
+export function deepMerge<T>(a: Partial<T>, b: Partial<T>): T {
+  const overwriteArrayMerge = (destinationArray, sourceArray) => sourceArray
+  return merge(a, b, { arrayMerge: overwriteArrayMerge })
+}
 
 export class PluginLogger extends EventEmitter<'change'> {
   private _logs: Array<[type: string, payload: any]> = []

+ 5 - 0
libs/yarn.lock

@@ -1483,6 +1483,11 @@ [email protected], debug@^4.1.0, debug@^4.1.1:
   dependencies:
     ms "2.1.2"
 
+deepmerge@^4.3.1:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
+  integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
+
 [email protected]:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.8.tgz#224fe9ae57d7ebd9a1ae1ac18c1c1ca3f532226f"