UNPKG

944 BPlain TextView Raw
1/**
2 * Sigma.js Utils
3 * ===============
4 *
5 * Various helper functions & classes used throughout the library.
6 */
7
8/**
9 * Checks whether the given value is a plain object.
10 *
11 * @param {mixed} value - Target value.
12 * @return {boolean}
13 */
14export function isPlainObject(value: any): boolean {
15 return typeof value === "object" && value !== null && value.constructor === Object;
16}
17
18/**
19 * Very simple recursive Object.assign-like function.
20 *
21 * @param {object} target - First object.
22 * @param {object} [...objects] - Objects to merge.
23 * @return {object}
24 */
25export function assign(target: object, ...objects): object {
26 target = target || {};
27
28 for (let i = 0, l = objects.length; i < l; i++) {
29 const o = objects[i];
30
31 if (!o) continue;
32
33 for (const k in o) {
34 if (isPlainObject(o[k])) {
35 target[k] = assign(target[k], o[k]);
36 } else {
37 target[k] = o[k];
38 }
39 }
40 }
41
42 return target;
43}