Skip to content

Commit d3ca465

Browse files
committed
remove "merge" dependency
1 parent e4e7914 commit d3ca465

File tree

5 files changed

+31
-10
lines changed

5 files changed

+31
-10
lines changed

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,5 @@
4141
"webpack": "^4.43.0",
4242
"webpack-cli": "^3.3.8"
4343
},
44-
"dependencies": {
45-
"merge": "^1.2.1"
46-
}
44+
"dependencies": {}
4745
}

src/lib/Dict.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Dependency from './Dependency'
22
import DictMeta from './DictMeta'
33
import DictData from './DictData'
4-
import merge from 'merge'
4+
import merge from './util/merge'
55

66
const DEFAULT_DICT_OPTIONS = {
77
types: [],

src/lib/DictMeta.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import DictOptions from './DictOptions'
2-
import merge from 'merge'
2+
import merge from './util/merge'
33

44
/**
55
* @classdesc 字典元数据
@@ -26,13 +26,12 @@ export default class DictMeta {
2626
* @returns {DictMeta}
2727
*/
2828
DictMeta.parse= function(options) {
29-
let opts = null
29+
const opts = merge.recursive({}, DictOptions.metas['*'])
3030
if (typeof options === 'string') {
31-
opts = DictOptions.metas[options] || {}
3231
opts.type = options
32+
merge.recursive(opts, DictOptions.metas[options])
3333
} else if (typeof options === 'object') {
34-
opts = options
34+
merge.recursive(opts, DictOptions.metas[options.type], options)
3535
}
36-
opts = merge.recursive(true, DictOptions.metas['*'], DictOptions.metas[opts.type], opts)
3736
return new DictMeta(opts)
3837
}

src/lib/DictOptions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import merge from 'merge'
1+
import merge from './util/merge'
22
import dictConverter from './DictConverter'
33

44
export const options = {

src/lib/util/merge.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function recursive(dst, ...srcs) {
2+
srcs.forEach(function(src) {
3+
recursiveMerge(dst, src)
4+
})
5+
return dst
6+
}
7+
8+
function recursiveMerge(dst, src) {
9+
for (let k in src) {
10+
if (dst[k] === null || dst[k] === undefined) {
11+
dst[k] = src[k]
12+
}
13+
if (Object.prototype.toString.call(dst[k]) === "[object Object]") {
14+
recursive(dst[k], src[k])
15+
} else {
16+
dst[k] = src[k]
17+
}
18+
}
19+
return dst
20+
}
21+
22+
export default {
23+
recursive,
24+
}

0 commit comments

Comments
 (0)