si-funciona
Version:
Funciones de utilidad para uso general. [General usage utility functions.]
996 lines (966 loc) • 956 kB
JavaScript
(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) => {