si-funciona 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,22 +5,20 @@ Object.defineProperty(exports, '__esModule', {
5
5
  value: true
6
6
  })
7
7
  exports.default = void 0
8
- require('core-js/modules/es.array.map.js')
9
- require('core-js/modules/esnext.async-iterator.map.js')
10
- require('core-js/modules/esnext.iterator.map.js')
11
8
  require('core-js/stable')
12
9
  var _mergeObjectsBase = _interopRequireDefault(require('./mergeObjectsBase'))
13
10
  function _interopRequireDefault (obj) { return obj && obj.__esModule ? obj : { default: obj } }
14
11
  /**
15
12
  * Clone objects for manipulation without data corruption, returns a copy of the provided object.
13
+ * NOTE: Use the mapLimit and relevancyRange to resolve "too much recursion" when the object is large and is known to
14
+ * have circular references. A high mapLimit may lead to heavy memory usage and slow performance.
16
15
  * @function
17
16
  * @memberOf module:objectHelpers
18
17
  * @param {Object} object - The original object that is being cloned
19
18
  * @param {Object} [options={}]
20
- * @param {number} [options.mapLimit=1000]
21
- * @param {number} [options.depthLimit=-1]
22
- * @param {number} [options.relevancyRange=100]
23
- * @param {Iterable} [options.map=[]]
19
+ * @param {number} [options.mapLimit=100] - Size of temporary reference array used in memory before assessing relevancy.
20
+ * @param {number} [options.depthLimit=-1] - Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited.
21
+ * @param {number} [options.relevancyRange=1000] - Total reference map length subtract this range, any relevancy less than that amount at time of evaluation will be removed.
24
22
  * @returns {Object}
25
23
  */
26
24
  var cloneObject = function cloneObject (object) {
@@ -30,14 +28,11 @@ var cloneObject = function cloneObject (object) {
30
28
  var _ref$depthLimit = _ref.depthLimit
31
29
  var depthLimit = _ref$depthLimit === void 0 ? -1 : _ref$depthLimit
32
30
  var _ref$relevancyRange = _ref.relevancyRange
33
- var relevancyRange = _ref$relevancyRange === void 0 ? 100 : _ref$relevancyRange
34
- var _ref$map = _ref.map
35
- var map = _ref$map === void 0 ? [] : _ref$map
31
+ var relevancyRange = _ref$relevancyRange === void 0 ? 1000 : _ref$relevancyRange
36
32
  return (0, _mergeObjectsBase.default)({
37
33
  mapLimit: mapLimit,
38
34
  depthLimit: depthLimit,
39
35
  relevancyRange: relevancyRange,
40
- map: map,
41
36
  useClone: true
42
37
  })(object)
43
38
  }
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/modules/es.array.map.js"),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/stable");var _mergeObjectsBase=_interopRequireDefault(require("./mergeObjectsBase"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var cloneObject=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=r.mapLimit,s=void 0===t?100:t,a=r.depthLimit,o=void 0===a?-1:a,i=r.relevancyRange,u=void 0===i?100:i,d=r.map,l=void 0===d?[]:d;return(0,_mergeObjectsBase.default)({mapLimit:s,depthLimit:o,relevancyRange:u,map:l,useClone:!0})(e)},_default=cloneObject;exports.default=_default;
1
+ "use strict";require("core-js/modules/es.object.define-property.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/stable");var _mergeObjectsBase=_interopRequireDefault(require("./mergeObjectsBase"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var cloneObject=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.mapLimit,i=void 0===r?100:r,o=t.depthLimit,u=void 0===o?-1:o,a=t.relevancyRange,s=void 0===a?1e3:a;return(0,_mergeObjectsBase.default)({mapLimit:i,depthLimit:u,relevancyRange:s,useClone:!0})(e)},_default=cloneObject;exports.default=_default;
@@ -33,24 +33,26 @@ function _interopRequireDefault (obj) { return obj && obj.__esModule ? obj : { d
33
33
  /**
34
34
  * Perform a deep merge of objects. This will return a function that will combine all objects and sub-objects.
35
35
  * Objects having the same attributes will overwrite from last object to first.
36
+ * NOTE: Use the mapLimit and relevancyRange to resolve "too much recursion" when the object is large and is known to
37
+ * have circular references. A high mapLimit may lead to heavy memory usage and slow performance.
36
38
  * @function
37
39
  * @memberOf module:objectHelpers
38
40
  * @param {Object} [options={}]
39
- * @param {number} [options.mapLimit=1000]
40
- * @param {number} [options.depthLimit=-1]
41
- * @param {number} [options.relevancyRange=100]
42
- * @param {Iterable|array} [options.map=[]]
41
+ * @param {number} [options.mapLimit=100] - Size of temporary reference array used in memory before assessing relevancy.
42
+ * @param {number} [options.depthLimit=-1] - Control how many nested levels deep will be used, -1 = no limit, >-1 = nth level limited.
43
+ * @param {number} [options.relevancyRange=1000] - Total reference map length subtract this range, any relevancy less than that amount at time of evaluation will be removed.
44
+ * @param {Iterable|array} [options.map=[]] - A predetermined list of references gathered (to be passed to itself during recursion).
43
45
  * @param {boolean} [options.useClone=false]
44
46
  * @returns {module:objectHelpers~mergeObjectsCallback}
45
47
  */
46
48
  var mergeObjectsBase = function mergeObjectsBase () {
47
49
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}
48
50
  var _ref$mapLimit = _ref.mapLimit
49
- var mapLimit = _ref$mapLimit === void 0 ? 1000 : _ref$mapLimit
51
+ var mapLimit = _ref$mapLimit === void 0 ? 100 : _ref$mapLimit
50
52
  var _ref$depthLimit = _ref.depthLimit
51
53
  var depthLimit = _ref$depthLimit === void 0 ? -1 : _ref$depthLimit
52
54
  var _ref$relevancyRange = _ref.relevancyRange
53
- var relevancyRange = _ref$relevancyRange === void 0 ? 100 : _ref$relevancyRange
55
+ var relevancyRange = _ref$relevancyRange === void 0 ? 1000 : _ref$relevancyRange
54
56
  var _ref$map = _ref.map
55
57
  var map = _ref$map === void 0 ? [] : _ref$map
56
58
  var _ref$useClone = _ref.useClone
@@ -1 +1 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/modules/es.array.map.js"),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/es.array.reduce.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js"),require("core-js/modules/es.array.find.js"),require("core-js/modules/esnext.async-iterator.find.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/stable");var _isCloneable=_interopRequireDefault(require("./isCloneable.js")),_reduceObject=_interopRequireDefault(require("./reduceObject.js")),_relevancyFilter=_interopRequireDefault(require("../functions/relevancyFilter.js")),_setValue=_interopRequireDefault(require("./setValue.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var mergeObjectsBase=function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r.mapLimit,u=void 0===t?1e3:t,s=r.depthLimit,a=void 0===s?-1:s,i=r.relevancyRange,o=void 0===i?100:i,n=r.map,l=void 0===n?[]:n,c=r.useClone,d=void 0!==c&&c;return function(){for(var r=arguments.length,t=new Array(r),s=0;s<r;s++)t[s]=arguments[s];var i=d?Array.isArray(t[0])?[]:{}:t.shift();return t.length<1||0===a?i:t.reduce((function(r,t){return t?(l.push({source:t,object:r,relevance:l.length}),l=(0,_relevancyFilter.default)(l,{mapLimit:u,relevancyRange:o}),(0,_reduceObject.default)(t,(function(t,s,i){if((0,_isCloneable.default)(s)){var n=r[i],c=l.find((function(e){return e.source===s}));if(c)return c.relevance=l.length+1,(0,_setValue.default)(i,c.object,t);if((0,_isCloneable.default)(n)&&n||(n=d?Array.isArray(s)?[]:{}:s),(0,_isCloneable.default)(n))return(0,_setValue.default)(i,e({mapLimit:u,depthLimit:a-1,relevancyRange:o,map:l,useClone:d})(n,s),t);l.push({source:s,object:n,relevance:l.length}),l=(0,_relevancyFilter.default)(l,{mapLimit:u,relevancyRange:o})}return(0,_setValue.default)(i,s,t)}),r)):r}),i||{})}},_default=mergeObjectsBase;exports.default=_default;
1
+ "use strict";require("core-js/modules/es.object.define-property.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,require("core-js/modules/es.array.map.js"),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/es.array.reduce.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.reduce.js"),require("core-js/modules/es.array.find.js"),require("core-js/modules/esnext.async-iterator.find.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/stable");var _isCloneable=_interopRequireDefault(require("./isCloneable.js")),_reduceObject=_interopRequireDefault(require("./reduceObject.js")),_relevancyFilter=_interopRequireDefault(require("../functions/relevancyFilter.js")),_setValue=_interopRequireDefault(require("./setValue.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var mergeObjectsBase=function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r.mapLimit,u=void 0===t?100:t,s=r.depthLimit,a=void 0===s?-1:s,i=r.relevancyRange,o=void 0===i?1e3:i,n=r.map,l=void 0===n?[]:n,c=r.useClone,d=void 0!==c&&c;return function(){for(var r=arguments.length,t=new Array(r),s=0;s<r;s++)t[s]=arguments[s];var i=d?Array.isArray(t[0])?[]:{}:t.shift();return t.length<1||0===a?i:t.reduce((function(r,t){return t?(l.push({source:t,object:r,relevance:l.length}),l=(0,_relevancyFilter.default)(l,{mapLimit:u,relevancyRange:o}),(0,_reduceObject.default)(t,(function(t,s,i){if((0,_isCloneable.default)(s)){var n=r[i],c=l.find((function(e){return e.source===s}));if(c)return c.relevance=l.length+1,(0,_setValue.default)(i,c.object,t);if((0,_isCloneable.default)(n)&&n||(n=d?Array.isArray(s)?[]:{}:s),(0,_isCloneable.default)(n))return(0,_setValue.default)(i,e({mapLimit:u,depthLimit:a-1,relevancyRange:o,map:l,useClone:d})(n,s),t);l.push({source:s,object:n,relevance:l.length}),l=(0,_relevancyFilter.default)(l,{mapLimit:u,relevancyRange:o})}return(0,_setValue.default)(i,s,t)}),r)):r}),i||{})}},_default=mergeObjectsBase;exports.default=_default;
package/package.json CHANGED
@@ -12,8 +12,8 @@
12
12
  "utilidades",
13
13
  "general"
14
14
  ],
15
- "version": "1.0.0",
16
- "license": "MIT",
15
+ "version": "1.1.0",
16
+ "license": "GPL-3.0-or-later",
17
17
  "bugs": {
18
18
  "url": "https://github.com/jheagle/si-funciona/issues"
19
19
  },
@@ -29,13 +29,11 @@
29
29
  "watch:test": "gulp watchTest"
30
30
  },
31
31
  "dependencies": {
32
- "npm": "^9.6.0"
32
+ "npm": "^9.6.2"
33
33
  },
34
34
  "devDependencies": {
35
35
  "gulp": "^4.0.2",
36
- "jest": "^29.4.3",
37
- "jest-environment-jsdom": "^29.4.3",
38
- "js-build-tools": "^1.2.0",
36
+ "js-build-tools": "^1.2.1",
39
37
  "jsdoc": "^4.0.2",
40
38
  "standard": "^17.0.0"
41
39
  },