UNPKG

si-funciona

Version:

Funciones de utilidad para uso general. [General usage utility functions.]

996 lines (966 loc) 956 kB
(function () { function r (e, n, t) { function o (i, f) { if (!n[i]) { if (!e[i]) { var c = typeof require === 'function' && require; if (!f && c) return c(i, !0); if (u) return u(i, !0); var a = new Error("Cannot find module '" + i + "'"); throw a.code = 'MODULE_NOT_FOUND', a } var p = n[i] = { exports: {} }; e[i][0].call(p.exports, function (r) { var n = e[i][1][r]; return o(n || r) }, p, p.exports, r, e, n, t) } return n[i].exports } for (var u = typeof require === 'function' && require, i = 0; i < t.length; i++)o(t[i]); return o } return r })()({ 1: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') var _addUniqueToArray = _interopRequireDefault(require('./arrays/addUniqueToArray')) var _BasicQueue = _interopRequireDefault(require('./arrays/BasicQueue')) var _buildArray = _interopRequireDefault(require('./arrays/buildArray')) var _buildArrayOfReferences = _interopRequireDefault(require('./arrays/buildArrayOfReferences')) var _compareArrays = _interopRequireDefault(require('./arrays/compareArrays')) var _mergeArrays = _interopRequireDefault(require('./arrays/mergeArrays')) var _uniqueArray = _interopRequireDefault(require('./arrays/uniqueArray')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Some simple utility functions for generating arrays or performing work on arrays. * @file * @author Joshua Heagle <joshuaheagle@gmail.com> * @version 1.0.0 * @module arrayHelpers * @memberOf module:siFunciona */ var _default = exports.default = { addUniqueToArray: _addUniqueToArray.default, BasicQueue: _BasicQueue.default, buildArray: _buildArray.default, buildArrayOfReferences: _buildArrayOfReferences.default, compareArrays: _compareArrays.default, mergeArrays: _mergeArrays.default, uniqueArray: _uniqueArray.default } }, { './arrays/BasicQueue': 2, './arrays/addUniqueToArray': 3, './arrays/buildArray': 4, './arrays/buildArrayOfReferences': 5, './arrays/compareArrays': 6, './arrays/mergeArrays': 7, './arrays/uniqueArray': 8, 'core-js/stable': 655 }], 2: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') /** * Class BasicQueue is a functional example of a queue to be used with queueManager. * @memberOf module:arrayHelpers */ class BasicQueue { constructor () { const innerList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [] this.innerList = innerList } /** * Remove and return the next item in the queue * @returns {queuedItem|*} */ dequeue () { return this.innerList.shift() } /** * Check if the queue is empty * @returns {boolean} */ empty () { return !this.size() } /** * Add an item to the end of the queue * @param {queuedItem|*} data * @returns {BasicQueue} */ enqueue (data) { this.innerList.push(data) return this } /** * Retrieve the next item from the queue * @returns {queuedItem|*} */ peek () { return this.empty() ? null : this.innerList[0] } /** * Get the quantity of items in the queue * @returns {number} */ size () { return this.innerList.length } } var _default = exports.default = BasicQueue }, { 'core-js/stable': 655 }], 3: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') /** * Having an array and a potential new array element, check if the element is in the array, if not append to array. * @memberOf module:arrayHelpers * @param {*} item - An potential array element, possibly a DomItem * @param {Array} array - An array where an element may be appended. * @returns {Array} */ const addUniqueToArray = (item, array) => !array.includes(item) ? array.concat([item]) : array var _default = exports.default = addUniqueToArray }, { 'core-js/stable': 655 }], 4: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') var _cloneObject = _interopRequireDefault(require('../objects/cloneObject')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Leverage buildArrayBase to generate an array filled with a copy of the provided item. * The length defines how long the array should be. * @memberOf module:arrayHelpers * @param {*} item - The item to be used for each array element * @param {number} length - The desired length of the array * @returns {Array.<*>} */ const buildArray = (item, length) => { const arr = [] while (arr.length < length) { const cloned = (0, _cloneObject.default)(item) arr.push(cloned) } return arr } var _default = exports.default = buildArray }, { '../objects/cloneObject': 41, 'core-js/stable': 655 }], 5: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') /** * Leverage buildArrayBase to generate an array filled with references to the provided item. * The length defines how long the array should be. * @memberOf module:arrayHelpers * @param {*} item - The item to be used for each array element * @param {number} length - The desired length of the array * @returns {Array.<*>} */ const buildArrayOfReferences = (item, length) => { const arr = [] while (arr.length < length) { arr.push(item) } return arr } var _default = exports.default = buildArrayOfReferences }, { 'core-js/stable': 655 }], 6: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.every.js') require('core-js/modules/esnext.async-iterator.map.js') require('core-js/modules/esnext.async-iterator.reduce.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.every.js') require('core-js/modules/esnext.iterator.map.js') require('core-js/modules/esnext.iterator.reduce.js') require('core-js/stable') var _isObject = _interopRequireDefault(require('../objects/isObject')) var _mergeArrays = _interopRequireDefault(require('./mergeArrays')) var _objectKeys = _interopRequireDefault(require('../objects/objectKeys')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Compare two Arrays and return the Object where the value for each property is as follows: * -1 to indicate val1 is less than val2 * 0 to indicate both values are the equal * 1 to indicate val1 is greater than val2 * The returned Object uses the element values as the property names * This functions works by first creating a concatenated array of all unique values. Then for each unique values, * convert to a string and use it as a new property name. Array filter each array checking if it has the unique value. * Use the lengths of these filtered arrays to compare. So if the first array has the value and the second one doesn't * the first length will be one or more and the second will be zero, if the both have the value then both will be one * or more. * @example * // example of input and resulting output * compareArrays( * ['match1', 'firstMismatch1', 'match2', 'firstMismatch2', 'badMatch1'], * ['match1', 'match2', 'secondMismatch1', 'badMatch1', 'badMatch1'] * ) * // unique array * ['match1', 'firstMismatch1', 'match2', 'firstMismatch2', 'badMatch1', 'secondMismatch1'] * // result object * [ * { * value: 'match1', * keys: [[0], [0]], * result: [0, 0] * }, * { * value: 'firstMismatch1', * keys: [[1], []], * result: [1, -1] * }, * { * value: 'match2', * keys: [[2], [1]], * result: [0, 0] * }, * { * value: 'firstMismatch2', * keys: [[3], []], * result: [1, -1] * }, * { * value: 'badMatch1', * keys: [[4], [3, 4]], * result: [0, 0] * }, * { * value: 'secondMismatch1', * keys: [[], [2]], * result: [-1, 1] * } * ] * * @memberOf module:arrayHelpers * @param {...Array} arrays - The arrays to compare * @returns {Array.<module:arrayHelpers~compareArrayResult>} */ const compareArrays = function () { for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) { arrays[_key] = arguments[_key] } return (0, _mergeArrays.default)(...arrays).reduce((results, attr) => { const attrType = typeof attr const useArray = Array.isArray(attr) const keys = arrays.map(array => array.reduce((results, current, key) => { const currentType = typeof current if (attrType !== currentType) { return results } if (!(0, _isObject.default)(attr)) { return current === attr ? [...results, key] : results } if (useArray !== Array.isArray(current)) { return results } const compareKeys = useArray ? compareArrays(attr, current) : compareArrays((0, _objectKeys.default)(attr), (0, _objectKeys.default)(current)) return compareKeys.every(compare => compare.result.every(result => result === 0)) ? [...results, key] : results }, [])) const arrayResults = keys.map(array => array.length ? 1 : -1) return [...results, { value: attr, keys: keys, result: arrayResults.every(result => result === 1) ? arrayResults.map(result => 0) : arrayResults }] }, []) } var _default = exports.default = compareArrays }, { '../objects/isObject': 50, '../objects/objectKeys': 55, './mergeArrays': 7, 'core-js/modules/esnext.async-iterator.every.js': 614, 'core-js/modules/esnext.async-iterator.map.js': 618, 'core-js/modules/esnext.async-iterator.reduce.js': 619, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.every.js': 622, 'core-js/modules/esnext.iterator.map.js': 626, 'core-js/modules/esnext.iterator.reduce.js': 627, 'core-js/stable': 655 }], 7: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.filter.js') require('core-js/modules/esnext.async-iterator.map.js') require('core-js/modules/esnext.async-iterator.reduce.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.filter.js') require('core-js/modules/esnext.iterator.map.js') require('core-js/modules/esnext.iterator.reduce.js') require('core-js/stable') var _uniqueArray = _interopRequireDefault(require('./uniqueArray')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Take multiple arrays and then filter all these into one unique array. * @memberOf module:arrayHelpers * @param {...Array} arrays - Provide multiple arrays to create one unique array * @returns {Array} */ const mergeArrays = function () { for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) { arrays[_key] = arguments[_key] } return arrays.map(_uniqueArray.default).reduce((merged, arr) => [...merged, ...arr.filter(attr => !merged.includes(attr))], []) } var _default = exports.default = mergeArrays }, { './uniqueArray': 8, 'core-js/modules/esnext.async-iterator.filter.js': 615, 'core-js/modules/esnext.async-iterator.map.js': 618, 'core-js/modules/esnext.async-iterator.reduce.js': 619, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.filter.js': 623, 'core-js/modules/esnext.iterator.map.js': 626, 'core-js/modules/esnext.iterator.reduce.js': 627, 'core-js/stable': 655 }], 8: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.filter.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.filter.js') require('core-js/stable') /** * Remove duplicate values from an array. uniqueArray * @memberOf module:arrayHelpers * @param {Array} array - The array to make unique * @returns {Array} */ const uniqueArray = array => array.filter((item, index) => array.indexOf(item) === index) var _default = exports.default = uniqueArray }, { 'core-js/modules/esnext.async-iterator.filter.js': 615, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.filter.js': 623, 'core-js/stable': 655 }], 9: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') var _assignDescriptor = _interopRequireDefault(require('./descriptors/assignDescriptor')) var _assignDescriptorDetail = _interopRequireDefault(require('./descriptors/assignDescriptorDetail')) var _checkClearValues = _interopRequireDefault(require('./descriptors/checkClearValues')) var _checkDescriptorComplete = _interopRequireDefault(require('./descriptors/checkDescriptorComplete')) var _cloneDescriptor = _interopRequireDefault(require('./descriptors/cloneDescriptor')) var _cloneDescriptorDetail = _interopRequireDefault(require('./descriptors/cloneDescriptorDetail')) var _compareDescriptor = _interopRequireDefault(require('./descriptors/compareDescriptor')) var _describeObject = _interopRequireDefault(require('./descriptors/describeObject')) var _describeObjectMap = _interopRequireDefault(require('./descriptors/describeObjectMap')) var _describeObjectDetail = _interopRequireDefault(require('./descriptors/describeObjectDetail')) var _nextReference = _interopRequireDefault(require('./descriptors/nextReference')) var _sameDescriptor = _interopRequireDefault(require('./descriptors/sameDescriptor')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Create a format to standardize every object into a specific template. * @file * @author Joshua Heagle <joshuaheagle@gmail.com> * @version 1.0.0 * @module objectDescriptors * @memberOf module:siFunciona */ var _default = exports.default = { assignDescriptor: _assignDescriptor.default, assignDescriptorDetail: _assignDescriptorDetail.default, checkClearValues: _checkClearValues.default, checkDescriptorComplete: _checkDescriptorComplete.default, cloneDescriptor: _cloneDescriptor.default, cloneDescriptorDetail: _cloneDescriptorDetail.default, compareDescriptor: _compareDescriptor.default, describeObject: _describeObject.default, describeObjectMap: _describeObjectMap.default, describeObjectDetail: _describeObjectDetail.default, nextReference: _nextReference.default, sameDescriptor: _sameDescriptor.default } }, { './descriptors/assignDescriptor': 10, './descriptors/assignDescriptorDetail': 11, './descriptors/checkClearValues': 12, './descriptors/checkDescriptorComplete': 13, './descriptors/cloneDescriptor': 14, './descriptors/cloneDescriptorDetail': 15, './descriptors/compareDescriptor': 16, './descriptors/describeObject': 17, './descriptors/describeObjectDetail': 18, './descriptors/describeObjectMap': 19, './descriptors/nextReference': 20, './descriptors/sameDescriptor': 21, 'core-js/stable': 655 }], 10: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.every.js') require('core-js/modules/esnext.async-iterator.filter.js') require('core-js/modules/esnext.async-iterator.find.js') require('core-js/modules/esnext.async-iterator.for-each.js') require('core-js/modules/esnext.async-iterator.map.js') require('core-js/modules/esnext.async-iterator.reduce.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.every.js') require('core-js/modules/esnext.iterator.filter.js') require('core-js/modules/esnext.iterator.find.js') require('core-js/modules/esnext.iterator.for-each.js') require('core-js/modules/esnext.iterator.map.js') require('core-js/modules/esnext.iterator.reduce.js') require('core-js/stable') var _assignDescriptorDetail = _interopRequireDefault(require('./assignDescriptorDetail')) var _cloneDescriptor = _interopRequireDefault(require('./cloneDescriptor')) var _compareArrays = _interopRequireDefault(require('../arrays/compareArrays')) var _uniqueArray = _interopRequireDefault(require('../arrays/uniqueArray')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Apply one or more descriptors to an existing descriptor so that they represent a merged version of the descriptors. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} originalMap * @param {...module:objectDescriptors~descriptor} descriptors * @returns {module:objectDescriptors~descriptor} */ const assignDescriptor = function (originalMap) { for (var _len = arguments.length, descriptors = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { descriptors[_key - 1] = arguments[_key] } return descriptors.reduce((assignedDescriptor, descriptor) => { const detailsDiff = (0, _compareArrays.default)(assignedDescriptor.keys, descriptor.keys) detailsDiff.forEach(diff => { const existingDetail = assignedDescriptor.details.find(detail => detail.key === diff.value) const newDetail = descriptor.details.find(detail => detail.key === diff.value) if (diff.result.every(result => result === 0)) { assignedDescriptor.details[existingDetail.index] = (0, _assignDescriptorDetail.default)(existingDetail, newDetail) return assignedDescriptor } const useDetail = diff.result[0] > 0 ? existingDetail : newDetail if (!useDetail) { assignedDescriptor.details[existingDetail.index].optional = true return assignedDescriptor } const useIndex = diff.result[0] > 0 ? useDetail.index : assignedDescriptor.length assignedDescriptor.details[useIndex] = Object.assign({}, useDetail, { index: useIndex, optional: true }) assignedDescriptor.length = assignedDescriptor.length < assignedDescriptor.details.length ? assignedDescriptor.details.length : assignedDescriptor.length return assignedDescriptor }) assignedDescriptor.keys = (0, _uniqueArray.default)(assignedDescriptor.details.map(detail => detail.key)) assignedDescriptor.references = (0, _uniqueArray.default)(assignedDescriptor.details.filter(detail => detail.isReference).map(detail => detail.index)) assignedDescriptor.isArray = assignedDescriptor.length ? assignedDescriptor.details.every(detail => typeof detail.key === 'number') : assignedDescriptor.isArray assignedDescriptor.complete = !assignedDescriptor.references.length || assignedDescriptor.complete || descriptor.complete return assignedDescriptor }, (0, _cloneDescriptor.default)(originalMap)) } var _default = exports.default = assignDescriptor }, { '../arrays/compareArrays': 6, '../arrays/uniqueArray': 8, './assignDescriptorDetail': 11, './cloneDescriptor': 14, 'core-js/modules/esnext.async-iterator.every.js': 614, 'core-js/modules/esnext.async-iterator.filter.js': 615, 'core-js/modules/esnext.async-iterator.find.js': 616, 'core-js/modules/esnext.async-iterator.for-each.js': 617, 'core-js/modules/esnext.async-iterator.map.js': 618, 'core-js/modules/esnext.async-iterator.reduce.js': 619, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.every.js': 622, 'core-js/modules/esnext.iterator.filter.js': 623, 'core-js/modules/esnext.iterator.find.js': 624, 'core-js/modules/esnext.iterator.for-each.js': 625, 'core-js/modules/esnext.iterator.map.js': 626, 'core-js/modules/esnext.iterator.reduce.js': 627, 'core-js/stable': 655 }], 11: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.find.js') require('core-js/modules/esnext.async-iterator.reduce.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.find.js') require('core-js/modules/esnext.iterator.reduce.js') require('core-js/stable') var _cloneDescriptorDetail = _interopRequireDefault(require('./cloneDescriptorDetail')) var _uniqueArray = _interopRequireDefault(require('../arrays/uniqueArray')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Assign properties from other details onto an existing detail. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptorDetail} originalDetail * @param {...module:objectDescriptors~descriptorDetail} details * @returns {module:objectDescriptors~descriptorDetail} */ const assignDescriptorDetail = function (originalDetail) { for (var _len = arguments.length, details = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { details[_key - 1] = arguments[_key] } return details.reduce((existingDetail, newDetail) => { existingDetail.type = (0, _uniqueArray.default)([...existingDetail.type, ...newDetail.type]) existingDetail.value = (0, _uniqueArray.default)([...existingDetail.value, ...newDetail.value]) existingDetail.nullable = existingDetail.nullable || newDetail.nullable existingDetail.optional = existingDetail.optional || newDetail.optional existingDetail.circular = existingDetail.circular || newDetail.circular existingDetail.isReference = existingDetail.isReference || newDetail.isReference existingDetail.isInstance = existingDetail.isInstance || newDetail.isInstance existingDetail.arrayReference = [existingDetail.arrayReference, newDetail.arrayReference].find(ref => typeof ref === 'number') existingDetail.objectReference = [existingDetail.objectReference, newDetail.objectReference].find(ref => typeof ref === 'number') existingDetail.arrayReference = typeof existingDetail.arrayReference === 'undefined' ? null : existingDetail.arrayReference existingDetail.objectReference = typeof existingDetail.objectReference === 'undefined' ? null : existingDetail.objectReference return existingDetail }, (0, _cloneDescriptorDetail.default)(originalDetail)) } var _default = exports.default = assignDescriptorDetail }, { '../arrays/uniqueArray': 8, './cloneDescriptorDetail': 15, 'core-js/modules/esnext.async-iterator.find.js': 616, 'core-js/modules/esnext.async-iterator.reduce.js': 619, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.find.js': 624, 'core-js/modules/esnext.iterator.reduce.js': 627, 'core-js/stable': 655 }], 12: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.map.js') require('core-js/modules/esnext.iterator.map.js') require('core-js/stable') var _setValue = _interopRequireDefault(require('../objects/setValue')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Check if we should clear the values on this descriptor * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} descriptor * @param {boolean} [keepValues=false] * @returns {module:objectDescriptors~descriptor} */ const checkClearValues = function (descriptor) { const keepValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false return (0, _setValue.default)('details', descriptor.complete && !keepValues ? descriptor.details.map(detail => (0, _setValue.default)('value', [], detail)) : descriptor.details, descriptor) } var _default = exports.default = checkClearValues }, { '../objects/setValue': 59, 'core-js/modules/esnext.async-iterator.map.js': 618, 'core-js/modules/esnext.iterator.map.js': 626, 'core-js/stable': 655 }], 13: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.every.js') require('core-js/modules/esnext.async-iterator.some.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.every.js') require('core-js/modules/esnext.iterator.some.js') require('core-js/stable') var _setValue = _interopRequireDefault(require('../objects/setValue')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Check if the descriptors references have all been built and set complete to true if they have. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} descriptor * @returns {module:objectDescriptors~descriptor} */ const checkDescriptorComplete = descriptor => (0, _setValue.default)('complete', descriptor.references.every(refId => [descriptor.details[refId].arrayReference, descriptor.details[refId].objectReference].some(ref => typeof ref === 'number')), descriptor) var _default = exports.default = checkDescriptorComplete }, { '../objects/setValue': 59, 'core-js/modules/esnext.async-iterator.every.js': 614, 'core-js/modules/esnext.async-iterator.some.js': 620, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.every.js': 622, 'core-js/modules/esnext.iterator.some.js': 628, 'core-js/stable': 655 }], 14: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.map.js') require('core-js/modules/esnext.iterator.map.js') require('core-js/stable') var _cloneDescriptorDetail = _interopRequireDefault(require('./cloneDescriptorDetail')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Make a copy of an object descriptor so that the original will not be mutated. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} originalMap * @returns {module:objectDescriptors~descriptor} */ const cloneDescriptor = originalMap => { const copyMap = {} // @ts-ignore copyMap.index = originalMap.index || 0 // @ts-ignore copyMap.details = originalMap.details.map(_cloneDescriptorDetail.default) // @ts-ignore copyMap.length = originalMap.length // @ts-ignore copyMap.keys = originalMap.keys.map(key => key) // @ts-ignore copyMap.references = originalMap.references.map(reference => reference) // @ts-ignore copyMap.isArray = originalMap.isArray // @ts-ignore copyMap.complete = originalMap.complete return copyMap } var _default = exports.default = cloneDescriptor }, { './cloneDescriptorDetail': 15, 'core-js/modules/esnext.async-iterator.map.js': 618, 'core-js/modules/esnext.iterator.map.js': 626, 'core-js/stable': 655 }], 15: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.for-each.js') require('core-js/modules/esnext.async-iterator.map.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.for-each.js') require('core-js/modules/esnext.iterator.map.js') require('core-js/stable') var _objectKeys = _interopRequireDefault(require('../objects/objectKeys')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Get a new copy of an existing Descriptor Detail * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptorDetail} originalDetail * @returns {module:objectDescriptors~descriptorDetail} */ const cloneDescriptorDetail = originalDetail => { const copyDetail = {}; (0, _objectKeys.default)(originalDetail).forEach(key => { // @ts-ignore copyDetail[key] = Array.isArray(originalDetail[key]) ? originalDetail[key].map(value => value) : originalDetail[key] }) return copyDetail } var _default = exports.default = cloneDescriptorDetail }, { '../objects/objectKeys': 55, 'core-js/modules/esnext.async-iterator.for-each.js': 617, 'core-js/modules/esnext.async-iterator.map.js': 618, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.for-each.js': 625, 'core-js/modules/esnext.iterator.map.js': 626, 'core-js/stable': 655 }], 16: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.every.js') require('core-js/modules/esnext.async-iterator.find.js') require('core-js/modules/esnext.async-iterator.some.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.every.js') require('core-js/modules/esnext.iterator.find.js') require('core-js/modules/esnext.iterator.some.js') require('core-js/stable') /** * Check if two descriptors are the same or similar in that they have similar keys and the associated types are the same. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} descriptor1 * @param {module:objectDescriptors~descriptor} descriptor2 * @returns {boolean} */ const compareDescriptor = (descriptor1, descriptor2) => { if (descriptor1.isArray !== descriptor2.isArray) { return false } if (descriptor1.length === 0 || descriptor2.length === 0) { return descriptor1.length === descriptor2.length } const smallerDescriptor = descriptor1.length <= descriptor2.length ? descriptor1 : descriptor2 const largerDescriptor = descriptor2.length >= descriptor1.length ? descriptor2 : descriptor1 return smallerDescriptor.keys.every(key => largerDescriptor.keys.includes(key)) ? smallerDescriptor.details.every(detail => detail.type.some(type => largerDescriptor.details.find(foundDetail => foundDetail.key === detail.key).type.includes(type))) : false } var _default = exports.default = compareDescriptor }, { 'core-js/modules/esnext.async-iterator.every.js': 614, 'core-js/modules/esnext.async-iterator.find.js': 616, 'core-js/modules/esnext.async-iterator.some.js': 620, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.every.js': 622, 'core-js/modules/esnext.iterator.find.js': 624, 'core-js/modules/esnext.iterator.some.js': 628, 'core-js/stable': 655 }], 17: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') var _assignDescriptorDetail = _interopRequireDefault(require('./assignDescriptorDetail')) var _describeObjectDetail = _interopRequireDefault(require('./describeObjectDetail')) var _objectKeys = _interopRequireDefault(require('../objects/objectKeys')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Trace an object and return the descriptor which defines the object's structure and attributes. * @memberOf module:objectDescriptors * @param {Object} object * @returns {module:objectDescriptors~descriptor} */ const describeObject = object => { const descriptor = { index: 0, details: [], length: 0, keys: [], references: [], isArray: false, complete: false } const keys = (0, _objectKeys.default)(object) for (let i = 0; i < keys.length; ++i) { const key = keys[i] // @ts-ignore const newDetail = (0, _describeObjectDetail.default)(object[key], key, descriptor.length++) if (typeof key === 'number' && descriptor.details.length) { descriptor.details[0] = (0, _assignDescriptorDetail.default)(descriptor.details[0], newDetail) descriptor.keys = [0] if (newDetail.isReference) { descriptor.references = [0] } continue } descriptor.details.push(newDetail) descriptor.keys.push(newDetail.key) if (newDetail.isReference) { descriptor.references.push(newDetail.index) } } descriptor.isArray = Array.isArray(object) descriptor.complete = !descriptor.references.length return descriptor } var _default = exports.default = describeObject }, { '../objects/objectKeys': 55, './assignDescriptorDetail': 11, './describeObjectDetail': 18, 'core-js/stable': 655 }], 18: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') var _emptyObject = _interopRequireDefault(require('../objects/emptyObject')) var _isCloneable = _interopRequireDefault(require('../objects/isCloneable')) var _isInstanceObject = _interopRequireDefault(require('../objects/isInstanceObject')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Trace an object's attribute and provide details about it. * @memberOf module:objectDescriptors * @param {*} value * @param {string|number} [key=0] * @param {number} [index=0] * @returns {module:objectDescriptors~descriptorDetail} */ const describeObjectDetail = function (value) { const key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0 const index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0 const type = typeof value return { index: index, key: key, type: [type], value: [value], nullable: value === null, optional: false, circular: false, isReference: (0, _isCloneable.default)(value) && !(0, _emptyObject.default)(value), isInstance: (0, _isInstanceObject.default)(value), arrayReference: null, objectReference: null } } var _default = exports.default = describeObjectDetail }, { '../objects/emptyObject': 46, '../objects/isCloneable': 48, '../objects/isInstanceObject': 49, 'core-js/stable': 655 }], 19: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.find.js') require('core-js/modules/esnext.async-iterator.for-each.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.find.js') require('core-js/modules/esnext.iterator.for-each.js') require('core-js/stable') var _assignDescriptor = _interopRequireDefault(require('./assignDescriptor')) var _checkClearValues = _interopRequireDefault(require('./checkClearValues')) var _checkDescriptorComplete = _interopRequireDefault(require('./checkDescriptorComplete')) var _compareDescriptor = _interopRequireDefault(require('./compareDescriptor')) var _describeObject = _interopRequireDefault(require('./describeObject')) var _nextReference = _interopRequireDefault(require('./nextReference')) var _sameDescriptor = _interopRequireDefault(require('./sameDescriptor')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Trace out the entire object including nested objects. * @memberOf module:objectDescriptors * @param {Object|Array} object * @param {Object} [options={}] * @param {number} [options.mapLimit=1000000000] * @param {number} [options.depthLimit=-1] * @param {boolean} [options.keepValues=false] * @returns {module:objectDescriptors~descriptorMap} */ const describeObjectMap = function (object) { const { mapLimit = 1000000000, depthLimit = -1, keepValues = false } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} const descriptorMap = [(0, _describeObject.default)(object)] descriptorMap[0].index = 0 const describeReferences = function (descriptor, currentDetail) { let limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1 const returnCallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : returnMap => returnMap let index = descriptorMap.length const nextRef = currentDetail ? (0, _nextReference.default)(descriptor, currentDetail.index) : undefined const nextDetail = typeof nextRef !== 'undefined' ? descriptor.details[nextRef] : null if (currentDetail) { const vals = descriptor.isArray ? currentDetail.value : [currentDetail.value[currentDetail.value.length - 1]] vals.forEach(val => { var _a, _b const tempDescriptor = (0, _describeObject.default)(val) const existingDescriptorIndex = descriptorMap.findIndex(existingDescriptor => (0, _compareDescriptor.default)(tempDescriptor, existingDescriptor)) if (existingDescriptorIndex >= 0) { index = existingDescriptorIndex if (tempDescriptor.length && (0, _sameDescriptor.default)(tempDescriptor, descriptorMap[existingDescriptorIndex])) { currentDetail.circular = true descriptor.details[currentDetail.index] = currentDetail } } if (index >= mapLimit) { return descriptorMap } if (limit === 0) { return descriptorMap } if (tempDescriptor.isArray) { index = (_a = currentDetail.arrayReference) !== null && _a !== void 0 ? _a : index descriptor.details[currentDetail.index].arrayReference = index } else { index = (_b = currentDetail.objectReference) !== null && _b !== void 0 ? _b : index descriptor.details[currentDetail.index].objectReference = index } tempDescriptor.index = index if (existingDescriptorIndex < 0) { descriptorMap[index] = descriptorMap[index] ? (0, _assignDescriptor.default)(descriptorMap[index], tempDescriptor) : tempDescriptor } descriptorMap[descriptor.index] = (0, _assignDescriptor.default)(descriptorMap[descriptor.index], descriptor) currentDetail = descriptorMap[descriptor.index].details.find(detail => detail.key === currentDetail.key) if (!currentDetail.circular) { const newReference = (0, _nextReference.default)(tempDescriptor, -1) const newDetail = typeof newReference !== 'undefined' ? tempDescriptor.details[newReference] : null return describeReferences(tempDescriptor, newDetail, --limit, returnMap => describeReferences(descriptor, nextDetail, --limit)) } }) } descriptorMap[descriptor.index] = (0, _assignDescriptor.default)(descriptorMap[descriptor.index], (0, _checkDescriptorComplete.default)(descriptor)) descriptorMap[descriptor.index] = (0, _checkClearValues.default)(descriptorMap[descriptor.index], keepValues) return nextDetail ? describeReferences(descriptor, nextDetail, --limit) : returnCallback(descriptorMap) } const descriptor = descriptorMap[0] const currentReference = (0, _nextReference.default)(descriptor, -1) if (typeof currentReference === 'undefined') { descriptorMap[0] = (0, _assignDescriptor.default)(descriptorMap[0], (0, _checkDescriptorComplete.default)(descriptor)) descriptorMap[0] = (0, _checkClearValues.default)(descriptorMap[0], keepValues) return descriptorMap } return describeReferences(descriptor, descriptor.details[currentReference], depthLimit) } var _default = exports.default = describeObjectMap }, { './assignDescriptor': 10, './checkClearValues': 12, './checkDescriptorComplete': 13, './compareDescriptor': 16, './describeObject': 17, './nextReference': 20, './sameDescriptor': 21, 'core-js/modules/esnext.async-iterator.find.js': 616, 'core-js/modules/esnext.async-iterator.for-each.js': 617, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.find.js': 624, 'core-js/modules/esnext.iterator.for-each.js': 625, 'core-js/stable': 655 }], 20: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.find.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.find.js') require('core-js/stable') var _objectKeys = _interopRequireDefault(require('../objects/objectKeys')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Find the index of the next module:objectDescriptors.descriptorDetail to build a resource for. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} descriptor * @param {number} currentReference * @returns {number|undefined} */ const nextReference = (descriptor, currentReference) => descriptor.references.find(nextRef => { if (nextRef <= currentReference) { return false } const val = descriptor.details[nextRef].value[descriptor.details[nextRef].value.length - 1] if (typeof val !== 'object' || val === null || typeof val === 'undefined' || descriptor.details[nextRef].circular || descriptor.details[nextRef].isInstance) { return false } return !!(0, _objectKeys.default)(val).length }) var _default = exports.default = nextReference }, { '../objects/objectKeys': 55, 'core-js/modules/esnext.async-iterator.find.js': 616, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.find.js': 624, 'core-js/stable': 655 }], 21: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/modules/esnext.async-iterator.every.js') require('core-js/modules/esnext.async-iterator.some.js') require('core-js/modules/esnext.iterator.constructor.js') require('core-js/modules/esnext.iterator.every.js') require('core-js/modules/esnext.iterator.some.js') require('core-js/stable') /** * Check if the two descriptors are the same. * @memberOf module:objectDescriptors * @param {module:objectDescriptors~descriptor} descriptor1 * @param {module:objectDescriptors~descriptor} descriptor2 * @returns {boolean} */ const sameDescriptor = (descriptor1, descriptor2) => descriptor1.details.every((detail, index) => detail.value.some(dVal => descriptor2.details[index].value.includes(dVal))) var _default = exports.default = sameDescriptor }, { 'core-js/modules/esnext.async-iterator.every.js': 614, 'core-js/modules/esnext.async-iterator.some.js': 620, 'core-js/modules/esnext.iterator.constructor.js': 621, 'core-js/modules/esnext.iterator.every.js': 622, 'core-js/modules/esnext.iterator.some.js': 628, 'core-js/stable': 655 }], 22: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') var _callWithParams = _interopRequireDefault(require('./functions/callWithParams')) var _curry = _interopRequireDefault(require('./functions/curry')) var _delay = _interopRequireDefault(require('./functions/delay')) var _makeBasicQueue = _interopRequireDefault(require('./functions/makeBasicQueue')) var _onBodyLoad = _interopRequireDefault(require('./functions/onBodyLoad')) var _pipe = _interopRequireDefault(require('./functions/pipe')) var _preloadParams = _interopRequireDefault(require('./functions/preloadParams')) var _queueManager = _interopRequireDefault(require('./functions/queueManager')) var _queueTimeout = _interopRequireDefault(require('./functions/queueTimeout')) var _relevancyFilter = _interopRequireDefault(require('./functions/relevancyFilter')) var _trace = _interopRequireDefault(require('./functions/trace')) function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } } /** * Manage how functions are called with these utilities. * @file * @author Joshua Heagle <joshuaheagle@gmail.com> * @version 1.0.0 * @module functionHelpers * @memberOf module:siFunciona */ var _default = exports.default = { callWithParams: _callWithParams.default, curry: _curry.default, delay: _delay.default, makeBasicQueue: _makeBasicQueue.default, onBodyLoad: _onBodyLoad.default, pipe: _pipe.default, preloadParams: _preloadParams.default, queueManager: _queueManager.default, queueTimeout: _queueTimeout.default, relevancyFilter: _relevancyFilter.default, trace: _trace.default } }, { './functions/callWithParams': 23, './functions/curry': 24, './functions/delay': 25, './functions/makeBasicQueue': 26, './functions/onBodyLoad': 27, './functions/pipe': 28, './functions/preloadParams': 29, './functions/queueManager': 30, './functions/queueTimeout': 31, './functions/relevancyFilter': 32, './functions/trace': 33, 'core-js/stable': 655 }], 23: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') /** * Given a function, call with the correct number of parameters from an array of possible parameters. * @memberOf module:functionHelpers * @param {Function} fn - The function to be called * @param {Array} params - Array of possible function parameters * @param {number} [minimum=2] - Minimum number of parameters to use in the function * @returns {*} */ const callWithParams = function (fn) { const params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [] const minimum = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2 return fn(...params.slice(0, fn.length || minimum)) } var _default = exports.default = callWithParams }, { 'core-js/stable': 655 }], 24: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') /** * Return a curried version of the passed function. * The returned function expects the same number of arguments minus the ones provided. * fn is the name of the function being curried. * @memberOf module:functionHelpers * @param {Function} fn - Receives a function to be curried * @returns {Function|*} */ const curry = fn => function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } return args.length >= fn.length ? fn(...args) : function () { for (var _len2 = arguments.length, a = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { a[_key2] = arguments[_key2] } return curry(fn)(...[...args, ...a]) } } var _default = exports.default = curry }, { 'core-js/stable': 655 }], 25: [function (require, module, exports) { 'use strict' Object.defineProperty(exports, '__esModule', { value: true }) exports.default = void 0 require('core-js/stable') require('regenerator-runtime/runtime') /** * Provide a timeout which returns a promise. * @memberOf module:functionHelpers * @param {number} time - Delay in milliseconds * @returns {module:functionHelpers~delayHandler} */ const delay = function () { const time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0 let cancel = () => undefined return { resolver: new Promise((resolve, reject) => {