Leapond utilities
A set of JavaScript utilities for on-demand using.
Install
# npm
npm i @leapond/utilities
# yarn
yarn add @leapond/utilities
Usage
Development
// on-demand import
import {log, isEmptyPlainObjectStrict} from "@leappond/utilites/src/common";
import deepMerge from "@leapond/utilities/src/deepMerge";
// it will include whole Leapond Utilities
import {log, isObject, deepMerege} from "@leappond/utilites";
Browser
<!-- Legacy -->
<script src="./utilities-bundle.iife.babel.prod.min.js"></script>
<script>
lpU.log('batch merge', lpU.deepMerge.batch(
[
{a: 1, c: [1, 2, 3], d: new Map([[1, {x: 1, z: 3}]])},
null,
{b: 2},
3,
{c: [2, 3, 4]},
{d: new Map([[1, {x: 10, y: 2}]])}
],
{arrayPolicy: deepMerge.ARRAY_CONCAT_UNIQ}
))
</script>
<!-- Module -->
<script type="module">
import * as lpU from "./utilities-bundle.es.js";
lpU.log('batch merge', lpU.deepMerge.batch(
[
{a: 1, c: [1, 2, 3], d: new Map([[1, {x: 1, z: 3}]])},
null,
{b: 2},
3,
{c: [2, 3, 4]},
{d: new Map([[1, {x: 10, y: 2}]])}
],
{arrayPolicy: deepMerge.ARRAY_CONCAT_UNIQ}
))
</script>
Document
deepCopy(target, depthMax)
/**
* Merge Options
*
* {boolean|number} [clone=-Infinity] - if clone target. <br/>> true for all, false for none, <br/>> number<0 for reuse depth, number>0 for clone depth
* {boolean} [unEnumerableInclude=false] - if include keys not enumerable(and Symbol keys)
* {arrayMergePolicies} [arrayPolicy=ARRAY_NORMAL] - array merge policy of build-in
* {function} [arrayMerge] - custom array merger, (a, b) => result
* {boolean} [deepMap=true] - if dig in Map items
*/
/**
* Array Merge Policies
*
* ARRAY_NORMAL - write by deepMerge
* ARRAY_NORMAL_FIXED - existed item will be readonly, but can increase new item
* ARRAY_CONCAT - concat to target array
* ARRAY_CONCAT_UNIQ - concat to target array, but skip existed item
* ARRAY_REPLACE - replace whole array
* ARRAY_SEAL - fixed length
* ARRAY_FREEZE - ignore source
*/
deepMerge(target, source, options)
deepMerge.batch(aTargets, options)
// patched @nx-js/observer-util
observe({}, {scheduler:1})
// patched @nx-js/observer-util
const o = observable({x: 0})
observe(() => console.log('changed:', o.x), {
scheduler(ok, op) {
if (op.value > 100) ok(); else console.warn('o.x must large than 100!')
}
})
o.x = 99
o.x = 2021
Refer to the JSDoc/comments in code.
Exported items:
- log
- warn
- error
- info
- deepCopy
- deepMerge
- getMergeType
- isArray
- isEmpty
- isEmptyArray
- isEmptyObject
- isEmptyPlain
- isEmptyPlainObject
- isEmptyPlainObjectStrict
- isMap
- isObject
- isObservable
- isPlainObject
- isSet
- isWeakMap
- isWeakSet
- noop
- observable
- observe
- raw
- sObject
- ssArray
- ssMap
- ssObject
- ssSet
- ssSymbol
- ssWeakMap
- ssWeakSet
- toStr
- u
- unobserve
- version