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.
- package/LICENSE +674 -21
- package/README.md +13 -14
- package/browser/siFunciona.js +17 -20
- package/browser/siFunciona.min.js +1 -1
- package/dist/helpers/objects/cloneObject.js +6 -11
- package/dist/helpers/objects/cloneObject.min.js +1 -1
- package/dist/helpers/objects/mergeObjectsBase.js +8 -6
- package/dist/helpers/objects/mergeObjectsBase.min.js +1 -1
- package/package.json +4 -6
|
@@ -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=
|
|
21
|
-
* @param {number} [options.depthLimit=-1]
|
|
22
|
-
* @param {number} [options.relevancyRange=
|
|
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 ?
|
|
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/
|
|
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=
|
|
40
|
-
* @param {number} [options.depthLimit=-1]
|
|
41
|
-
* @param {number} [options.relevancyRange=
|
|
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 ?
|
|
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 ?
|
|
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?
|
|
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.
|
|
16
|
-
"license": "
|
|
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.
|
|
32
|
+
"npm": "^9.6.2"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"gulp": "^4.0.2",
|
|
36
|
-
"
|
|
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
|
},
|