@leapond/utilities

0.0.3 • Public • Published

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:

  1. log
  2. warn
  3. error
  4. info
  5. deepCopy
  6. deepMerge
  7. getMergeType
  8. isArray
  9. isEmpty
  10. isEmptyArray
  11. isEmptyObject
  12. isEmptyPlain
  13. isEmptyPlainObject
  14. isEmptyPlainObjectStrict
  15. isMap
  16. isObject
  17. isObservable
  18. isPlainObject
  19. isSet
  20. isWeakMap
  21. isWeakSet
  22. noop
  23. observable
  24. observe
  25. raw
  26. sObject
  27. ssArray
  28. ssMap
  29. ssObject
  30. ssSet
  31. ssSymbol
  32. ssWeakMap
  33. ssWeakSet
  34. toStr
  35. u
  36. unobserve
  37. version

Package Sidebar

Install

npm i @leapond/utilities

Weekly Downloads

0

Version

0.0.3

License

MIT

Unpacked Size

37.5 kB

Total Files

19

Last publish

Collaborators

  • arlendotcn