si-funciona 2.6.1 → 2.6.2
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/README.md +40 -10
- package/browser/siFunciona.js +18 -11
- package/dist/helpers/arrays/BasicQueue.d.ts +64 -64
- package/dist/helpers/arrays/BasicQueue.js +61 -61
- package/dist/helpers/arrays/addUniqueToArray.d.ts +9 -9
- package/dist/helpers/arrays/addUniqueToArray.js +16 -16
- package/dist/helpers/arrays/buildArray.d.ts +10 -10
- package/dist/helpers/arrays/buildArray.js +25 -25
- package/dist/helpers/arrays/buildArrayOfReferences.d.ts +10 -10
- package/dist/helpers/arrays/buildArrayOfReferences.js +22 -22
- package/dist/helpers/arrays/compareArrays.d.ts +96 -96
- package/dist/helpers/arrays/compareArrays.js +96 -96
- package/dist/helpers/arrays/mergeArrays.d.ts +8 -8
- package/dist/helpers/arrays/mergeArrays.js +21 -21
- package/dist/helpers/arrays/uniqueArray.d.ts +8 -8
- package/dist/helpers/arrays/uniqueArray.js +16 -16
- package/dist/helpers/arrays.d.ts +27 -27
- package/dist/helpers/arrays.js +74 -74
- package/dist/helpers/descriptors/assignDescriptor.d.ts +13 -13
- package/dist/helpers/descriptors/assignDescriptor.js +57 -57
- package/dist/helpers/descriptors/assignDescriptorDetail.d.ts +13 -13
- package/dist/helpers/descriptors/assignDescriptorDetail.js +36 -36
- package/dist/helpers/descriptors/checkClearValues.d.ts +11 -11
- package/dist/helpers/descriptors/checkClearValues.js +20 -20
- package/dist/helpers/descriptors/checkDescriptorComplete.d.ts +10 -10
- package/dist/helpers/descriptors/checkDescriptorComplete.js +19 -19
- package/dist/helpers/descriptors/cloneDescriptor.d.ts +9 -9
- package/dist/helpers/descriptors/cloneDescriptor.js +35 -35
- package/dist/helpers/descriptors/cloneDescriptorDetail.d.ts +9 -9
- package/dist/helpers/descriptors/cloneDescriptorDetail.js +26 -26
- package/dist/helpers/descriptors/compareDescriptor.d.ts +12 -12
- package/dist/helpers/descriptors/compareDescriptor.js +32 -32
- package/dist/helpers/descriptors/describeObject.d.ts +14 -14
- package/dist/helpers/descriptors/describeObject.js +52 -52
- package/dist/helpers/descriptors/describeObjectDetail.d.ts +13 -13
- package/dist/helpers/descriptors/describeObjectDetail.js +37 -37
- package/dist/helpers/descriptors/describeObjectMap.d.ts +35 -35
- package/dist/helpers/descriptors/describeObjectMap.js +107 -107
- package/dist/helpers/descriptors/nextReference.d.ts +12 -12
- package/dist/helpers/descriptors/nextReference.js +30 -30
- package/dist/helpers/descriptors/sameDescriptor.d.ts +12 -12
- package/dist/helpers/descriptors/sameDescriptor.js +21 -21
- package/dist/helpers/descriptors/samples/descriptor.d.ts +34 -34
- package/dist/helpers/descriptors/samples/descriptor.js +22 -22
- package/dist/helpers/descriptors/samples/descriptorDetail.d.ts +42 -42
- package/dist/helpers/descriptors/samples/descriptorDetail.js +24 -24
- package/dist/helpers/descriptors/samples/descriptorMap.d.ts +16 -16
- package/dist/helpers/descriptors/samples/descriptorMap.js +14 -14
- package/dist/helpers/descriptors/samples/mappedDescriptorMap.d.ts +10 -10
- package/dist/helpers/descriptors/samples/mappedDescriptorMap.js +287 -287
- package/dist/helpers/descriptors.d.ts +56 -56
- package/dist/helpers/descriptors.js +129 -129
- package/dist/helpers/functions/callWithParams.d.ts +10 -10
- package/dist/helpers/functions/callWithParams.js +16 -16
- package/dist/helpers/functions/curry.d.ts +10 -10
- package/dist/helpers/functions/curry.js +16 -16
- package/dist/helpers/functions/delay.d.ts +20 -20
- package/dist/helpers/functions/delay.js +31 -31
- package/dist/helpers/functions/makeBasicQueue.d.ts +9 -9
- package/dist/helpers/functions/makeBasicQueue.js +18 -18
- package/dist/helpers/functions/onBodyLoad.d.ts +9 -9
- package/dist/helpers/functions/onBodyLoad.js +75 -75
- package/dist/helpers/functions/pipe.d.ts +9 -9
- package/dist/helpers/functions/pipe.js +17 -17
- package/dist/helpers/functions/preloadParams.d.ts +19 -19
- package/dist/helpers/functions/preloadParams.js +20 -20
- package/dist/helpers/functions/queueManager.d.ts +48 -48
- package/dist/helpers/functions/queueManager.js +123 -123
- package/dist/helpers/functions/queueTimeout.d.ts +20 -20
- package/dist/helpers/functions/queueTimeout.js +22 -22
- package/dist/helpers/functions/relevancyFilter.d.ts +34 -34
- package/dist/helpers/functions/relevancyFilter.js +33 -33
- package/dist/helpers/functions/trace.d.ts +13 -13
- package/dist/helpers/functions/trace.js +24 -24
- package/dist/helpers/functions.d.ts +40 -40
- package/dist/helpers/functions.js +105 -105
- package/dist/helpers/numbers/absoluteMax.d.ts +9 -9
- package/dist/helpers/numbers/absoluteMax.js +15 -15
- package/dist/helpers/numbers/absoluteMin.d.ts +9 -9
- package/dist/helpers/numbers/absoluteMin.js +15 -15
- package/dist/helpers/numbers/compare.d.ts +12 -12
- package/dist/helpers/numbers/compare.js +18 -18
- package/dist/helpers/numbers/greatestCommonDivisor.d.ts +9 -9
- package/dist/helpers/numbers/greatestCommonDivisor.js +15 -15
- package/dist/helpers/numbers/leastCommonMultiple.d.ts +9 -9
- package/dist/helpers/numbers/leastCommonMultiple.js +17 -17
- package/dist/helpers/numbers/lowestCommonDenominator.d.ts +9 -9
- package/dist/helpers/numbers/lowestCommonDenominator.js +19 -19
- package/dist/helpers/numbers/randomInteger.d.ts +11 -5
- package/dist/helpers/numbers/randomInteger.js +11 -5
- package/dist/helpers/numbers/randomNumber.d.ts +7 -6
- package/dist/helpers/numbers/randomNumber.js +7 -6
- package/dist/helpers/numbers/simplestRatio.d.ts +8 -8
- package/dist/helpers/numbers/simplestRatio.js +28 -28
- package/dist/helpers/numbers.d.ts +30 -30
- package/dist/helpers/numbers.js +89 -89
- package/dist/helpers/objects/cloneObject.d.ts +19 -19
- package/dist/helpers/objects/cloneObject.js +31 -31
- package/dist/helpers/objects/dotGet.d.ts +11 -11
- package/dist/helpers/objects/dotGet.js +59 -59
- package/dist/helpers/objects/dotNotate.d.ts +27 -27
- package/dist/helpers/objects/dotNotate.js +79 -79
- package/dist/helpers/objects/dotSet.d.ts +11 -11
- package/dist/helpers/objects/dotSet.js +53 -53
- package/dist/helpers/objects/dotUnset.d.ts +10 -10
- package/dist/helpers/objects/dotUnset.js +52 -52
- package/dist/helpers/objects/emptyObject.d.ts +8 -8
- package/dist/helpers/objects/emptyObject.js +17 -17
- package/dist/helpers/objects/filterObject.d.ts +26 -26
- package/dist/helpers/objects/filterObject.js +33 -33
- package/dist/helpers/objects/isCloneable.d.ts +8 -8
- package/dist/helpers/objects/isCloneable.js +16 -16
- package/dist/helpers/objects/isEqual.d.ts +16 -16
- package/dist/helpers/objects/isEqual.js +100 -100
- package/dist/helpers/objects/isInstanceObject.d.ts +8 -8
- package/dist/helpers/objects/isInstanceObject.js +26 -26
- package/dist/helpers/objects/isObject.d.ts +8 -8
- package/dist/helpers/objects/isObject.js +14 -14
- package/dist/helpers/objects/mapObject.d.ts +25 -25
- package/dist/helpers/objects/mapObject.js +25 -25
- package/dist/helpers/objects/mergeObjects.d.ts +12 -12
- package/dist/helpers/objects/mergeObjects.js +19 -19
- package/dist/helpers/objects/mergeObjectsBase.d.ts +35 -35
- package/dist/helpers/objects/mergeObjectsBase.js +91 -91
- package/dist/helpers/objects/mergeObjectsMutable.d.ts +12 -12
- package/dist/helpers/objects/mergeObjectsMutable.js +17 -17
- package/dist/helpers/objects/objectKeys.d.ts +13 -13
- package/dist/helpers/objects/objectKeys.js +39 -39
- package/dist/helpers/objects/objectValues.d.ts +13 -13
- package/dist/helpers/objects/objectValues.js +20 -20
- package/dist/helpers/objects/reduceObject.d.ts +30 -30
- package/dist/helpers/objects/reduceObject.js +25 -25
- package/dist/helpers/objects/setAndReturnValue.d.ts +13 -13
- package/dist/helpers/objects/setAndReturnValue.js +19 -19
- package/dist/helpers/objects/setValue.d.ts +14 -14
- package/dist/helpers/objects/setValue.js +21 -21
- package/dist/helpers/objects.d.ts +121 -121
- package/dist/helpers/objects.js +177 -177
- package/dist/helpers/strings/camelCase.d.ts +8 -8
- package/dist/helpers/strings/camelCase.js +19 -19
- package/dist/helpers/strings/kabobCase.d.ts +8 -8
- package/dist/helpers/strings/kabobCase.js +18 -18
- package/dist/helpers/strings/makeFilepath.d.ts +9 -9
- package/dist/helpers/strings/makeFilepath.js +49 -49
- package/dist/helpers/strings/makeRelativePath.d.ts +9 -9
- package/dist/helpers/strings/makeRelativePath.js +43 -43
- package/dist/helpers/strings/regexEscape.d.ts +8 -8
- package/dist/helpers/strings/regexEscape.js +15 -15
- package/dist/helpers/strings/snakeCase.d.ts +8 -8
- package/dist/helpers/strings/snakeCase.js +18 -18
- package/dist/helpers/strings/strAfter.d.ts +9 -9
- package/dist/helpers/strings/strAfter.js +18 -18
- package/dist/helpers/strings/strAfterLast.d.ts +9 -9
- package/dist/helpers/strings/strAfterLast.js +18 -18
- package/dist/helpers/strings/strBefore.d.ts +9 -9
- package/dist/helpers/strings/strBefore.js +18 -18
- package/dist/helpers/strings/strBeforeLast.d.ts +9 -9
- package/dist/helpers/strings/strBeforeLast.js +18 -18
- package/dist/helpers/strings/titleCase.d.ts +8 -8
- package/dist/helpers/strings/titleCase.js +19 -19
- package/dist/helpers/strings/ucFirst.d.ts +8 -8
- package/dist/helpers/strings/ucFirst.js +14 -14
- package/dist/helpers/strings/words.d.ts +9 -9
- package/dist/helpers/strings/words.js +15 -15
- package/dist/helpers/strings.d.ts +38 -38
- package/dist/helpers/strings.js +121 -121
- package/dist/main.d.ts +15 -15
- package/dist/main.js +103 -103
- package/package.json +4 -4
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.default = void 0
|
|
7
|
-
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
-
require('core-js/modules/esnext.iterator.find.js')
|
|
9
|
-
require('core-js/modules/esnext.iterator.for-each.js')
|
|
10
|
-
const _assignDescriptor = _interopRequireDefault(require('./assignDescriptor'))
|
|
11
|
-
const _checkClearValues = _interopRequireDefault(require('./checkClearValues'))
|
|
12
|
-
const _checkDescriptorComplete = _interopRequireDefault(require('./checkDescriptorComplete'))
|
|
13
|
-
const _compareDescriptor = _interopRequireDefault(require('./compareDescriptor'))
|
|
14
|
-
const _describeObject = _interopRequireDefault(require('./describeObject'))
|
|
15
|
-
const _nextReference = _interopRequireDefault(require('./nextReference'))
|
|
16
|
-
const _sameDescriptor = _interopRequireDefault(require('./sameDescriptor'))
|
|
17
|
-
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
18
|
-
/**
|
|
19
|
-
* Trace out the entire object including nested objects, producing a flat descriptorMap - see the
|
|
20
|
-
* {@link module:objectDescriptors} module description for what a descriptor represents and why it's flat. This is
|
|
21
|
-
* the main entry point into this module: start here to describe a real object/array before comparing, merging, or
|
|
22
|
-
* inspecting its structure with the other functions in this module.
|
|
23
|
-
* @example
|
|
24
|
-
* describeObjectMap({ name: 'example', tags: ['a', 'b'] })
|
|
25
|
-
* // [
|
|
26
|
-
* // { index: 0, details: [...], length: 2, keys: ['name', 'tags'], references: [1], isArray: false, complete: true },
|
|
27
|
-
* // { index: 1, details: [...], length: 2, keys: [0], references: [], isArray: true, complete: true }
|
|
28
|
-
* // ]
|
|
29
|
-
* // descriptorMap[0] describes the top-level object; its 'tags' property is a reference (references: [1]) to
|
|
30
|
-
* // descriptorMap[1], which separately describes that nested array. descriptorMap[1]'s own `length` (2) reflects
|
|
31
|
-
* // the array's actual length, but `keys` has only one entry (0) since both elements share the same type
|
|
32
|
-
* // ('string') and are described together by a single, representative descriptorDetail.
|
|
33
|
-
* @memberOf module:objectDescriptors
|
|
34
|
-
* @param {Object|Array} object - The real object or array to describe.
|
|
35
|
-
* @param {Object} [options={}]
|
|
36
|
-
* @param {number} [options.mapLimit=1000000000] - Stop describing further nested references once the map reaches
|
|
37
|
-
* this many descriptors - a safety limit for extremely large or deeply-referenced structures.
|
|
38
|
-
* @param {number} [options.depthLimit=-1] - How many levels of nested objects/arrays to describe; `-1` means no
|
|
39
|
-
* limit, `0` describes only the top level, etc.
|
|
40
|
-
* @param {boolean} [options.keepValues=false] - By default, each detail's actual values are cleared once its
|
|
41
|
-
* descriptor is complete (to save memory) - set true to keep them.
|
|
42
|
-
* @returns {module:objectDescriptors~descriptorMap}
|
|
43
|
-
*/
|
|
44
|
-
const describeObjectMap = (object, {
|
|
45
|
-
mapLimit = 1000000000,
|
|
46
|
-
depthLimit = -1,
|
|
47
|
-
keepValues = false
|
|
48
|
-
} = {}) => {
|
|
49
|
-
const descriptorMap = [(0, _describeObject.default)(object)]
|
|
50
|
-
descriptorMap[0].index = 0
|
|
51
|
-
const describeReferences = (descriptor, currentDetail, limit = -1, returnCallback = returnMap => returnMap) => {
|
|
52
|
-
let index = descriptorMap.length
|
|
53
|
-
const nextRef = currentDetail ? (0, _nextReference.default)(descriptor, currentDetail.index) : undefined
|
|
54
|
-
const nextDetail = typeof nextRef !== 'undefined' ? descriptor.details[nextRef] : null
|
|
55
|
-
if (currentDetail) {
|
|
56
|
-
const vals = descriptor.isArray ? currentDetail.value : [currentDetail.value[currentDetail.value.length - 1]]
|
|
57
|
-
vals.forEach(val => {
|
|
58
|
-
let _a, _b
|
|
59
|
-
const tempDescriptor = (0, _describeObject.default)(val)
|
|
60
|
-
const existingDescriptorIndex = descriptorMap.findIndex(existingDescriptor => (0, _compareDescriptor.default)(tempDescriptor, existingDescriptor))
|
|
61
|
-
if (existingDescriptorIndex >= 0) {
|
|
62
|
-
index = existingDescriptorIndex
|
|
63
|
-
if (tempDescriptor.length && (0, _sameDescriptor.default)(tempDescriptor, descriptorMap[existingDescriptorIndex])) {
|
|
64
|
-
currentDetail.circular = true
|
|
65
|
-
descriptor.details[currentDetail.index] = currentDetail
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (index >= mapLimit) {
|
|
69
|
-
return descriptorMap
|
|
70
|
-
}
|
|
71
|
-
if (limit === 0) {
|
|
72
|
-
return descriptorMap
|
|
73
|
-
}
|
|
74
|
-
if (tempDescriptor.isArray) {
|
|
75
|
-
index = (_a = currentDetail.arrayReference) !== null && _a !== void 0 ? _a : index
|
|
76
|
-
descriptor.details[currentDetail.index].arrayReference = index
|
|
77
|
-
} else {
|
|
78
|
-
index = (_b = currentDetail.objectReference) !== null && _b !== void 0 ? _b : index
|
|
79
|
-
descriptor.details[currentDetail.index].objectReference = index
|
|
80
|
-
}
|
|
81
|
-
tempDescriptor.index = index
|
|
82
|
-
if (existingDescriptorIndex < 0) {
|
|
83
|
-
descriptorMap[index] = descriptorMap[index] ? (0, _assignDescriptor.default)(descriptorMap[index], tempDescriptor) : tempDescriptor
|
|
84
|
-
}
|
|
85
|
-
descriptorMap[descriptor.index] = (0, _assignDescriptor.default)(descriptorMap[descriptor.index], descriptor)
|
|
86
|
-
currentDetail = descriptorMap[descriptor.index].details.find(detail => detail.key === currentDetail.key)
|
|
87
|
-
if (!currentDetail.circular) {
|
|
88
|
-
const newReference = (0, _nextReference.default)(tempDescriptor, -1)
|
|
89
|
-
const newDetail = typeof newReference !== 'undefined' ? tempDescriptor.details[newReference] : null
|
|
90
|
-
return describeReferences(tempDescriptor, newDetail, --limit, returnMap => describeReferences(descriptor, nextDetail, --limit))
|
|
91
|
-
}
|
|
92
|
-
})
|
|
93
|
-
}
|
|
94
|
-
descriptorMap[descriptor.index] = (0, _assignDescriptor.default)(descriptorMap[descriptor.index], (0, _checkDescriptorComplete.default)(descriptor))
|
|
95
|
-
descriptorMap[descriptor.index] = (0, _checkClearValues.default)(descriptorMap[descriptor.index], keepValues)
|
|
96
|
-
return nextDetail ? describeReferences(descriptor, nextDetail, --limit) : returnCallback(descriptorMap)
|
|
97
|
-
}
|
|
98
|
-
const descriptor = descriptorMap[0]
|
|
99
|
-
const currentReference = (0, _nextReference.default)(descriptor, -1)
|
|
100
|
-
if (typeof currentReference === 'undefined') {
|
|
101
|
-
descriptorMap[0] = (0, _assignDescriptor.default)(descriptorMap[0], (0, _checkDescriptorComplete.default)(descriptor))
|
|
102
|
-
descriptorMap[0] = (0, _checkClearValues.default)(descriptorMap[0], keepValues)
|
|
103
|
-
return descriptorMap
|
|
104
|
-
}
|
|
105
|
-
return describeReferences(descriptor, descriptor.details[currentReference], depthLimit)
|
|
106
|
-
}
|
|
107
|
-
const _default = exports.default = describeObjectMap
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
+
require('core-js/modules/esnext.iterator.find.js')
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js')
|
|
10
|
+
const _assignDescriptor = _interopRequireDefault(require('./assignDescriptor'))
|
|
11
|
+
const _checkClearValues = _interopRequireDefault(require('./checkClearValues'))
|
|
12
|
+
const _checkDescriptorComplete = _interopRequireDefault(require('./checkDescriptorComplete'))
|
|
13
|
+
const _compareDescriptor = _interopRequireDefault(require('./compareDescriptor'))
|
|
14
|
+
const _describeObject = _interopRequireDefault(require('./describeObject'))
|
|
15
|
+
const _nextReference = _interopRequireDefault(require('./nextReference'))
|
|
16
|
+
const _sameDescriptor = _interopRequireDefault(require('./sameDescriptor'))
|
|
17
|
+
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
18
|
+
/**
|
|
19
|
+
* Trace out the entire object including nested objects, producing a flat descriptorMap - see the
|
|
20
|
+
* {@link module:objectDescriptors} module description for what a descriptor represents and why it's flat. This is
|
|
21
|
+
* the main entry point into this module: start here to describe a real object/array before comparing, merging, or
|
|
22
|
+
* inspecting its structure with the other functions in this module.
|
|
23
|
+
* @example
|
|
24
|
+
* describeObjectMap({ name: 'example', tags: ['a', 'b'] })
|
|
25
|
+
* // [
|
|
26
|
+
* // { index: 0, details: [...], length: 2, keys: ['name', 'tags'], references: [1], isArray: false, complete: true },
|
|
27
|
+
* // { index: 1, details: [...], length: 2, keys: [0], references: [], isArray: true, complete: true }
|
|
28
|
+
* // ]
|
|
29
|
+
* // descriptorMap[0] describes the top-level object; its 'tags' property is a reference (references: [1]) to
|
|
30
|
+
* // descriptorMap[1], which separately describes that nested array. descriptorMap[1]'s own `length` (2) reflects
|
|
31
|
+
* // the array's actual length, but `keys` has only one entry (0) since both elements share the same type
|
|
32
|
+
* // ('string') and are described together by a single, representative descriptorDetail.
|
|
33
|
+
* @memberOf module:objectDescriptors
|
|
34
|
+
* @param {Object|Array} object - The real object or array to describe.
|
|
35
|
+
* @param {Object} [options={}]
|
|
36
|
+
* @param {number} [options.mapLimit=1000000000] - Stop describing further nested references once the map reaches
|
|
37
|
+
* this many descriptors - a safety limit for extremely large or deeply-referenced structures.
|
|
38
|
+
* @param {number} [options.depthLimit=-1] - How many levels of nested objects/arrays to describe; `-1` means no
|
|
39
|
+
* limit, `0` describes only the top level, etc.
|
|
40
|
+
* @param {boolean} [options.keepValues=false] - By default, each detail's actual values are cleared once its
|
|
41
|
+
* descriptor is complete (to save memory) - set true to keep them.
|
|
42
|
+
* @returns {module:objectDescriptors~descriptorMap}
|
|
43
|
+
*/
|
|
44
|
+
const describeObjectMap = (object, {
|
|
45
|
+
mapLimit = 1000000000,
|
|
46
|
+
depthLimit = -1,
|
|
47
|
+
keepValues = false
|
|
48
|
+
} = {}) => {
|
|
49
|
+
const descriptorMap = [(0, _describeObject.default)(object)]
|
|
50
|
+
descriptorMap[0].index = 0
|
|
51
|
+
const describeReferences = (descriptor, currentDetail, limit = -1, returnCallback = returnMap => returnMap) => {
|
|
52
|
+
let index = descriptorMap.length
|
|
53
|
+
const nextRef = currentDetail ? (0, _nextReference.default)(descriptor, currentDetail.index) : undefined
|
|
54
|
+
const nextDetail = typeof nextRef !== 'undefined' ? descriptor.details[nextRef] : null
|
|
55
|
+
if (currentDetail) {
|
|
56
|
+
const vals = descriptor.isArray ? currentDetail.value : [currentDetail.value[currentDetail.value.length - 1]]
|
|
57
|
+
vals.forEach(val => {
|
|
58
|
+
let _a, _b
|
|
59
|
+
const tempDescriptor = (0, _describeObject.default)(val)
|
|
60
|
+
const existingDescriptorIndex = descriptorMap.findIndex(existingDescriptor => (0, _compareDescriptor.default)(tempDescriptor, existingDescriptor))
|
|
61
|
+
if (existingDescriptorIndex >= 0) {
|
|
62
|
+
index = existingDescriptorIndex
|
|
63
|
+
if (tempDescriptor.length && (0, _sameDescriptor.default)(tempDescriptor, descriptorMap[existingDescriptorIndex])) {
|
|
64
|
+
currentDetail.circular = true
|
|
65
|
+
descriptor.details[currentDetail.index] = currentDetail
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (index >= mapLimit) {
|
|
69
|
+
return descriptorMap
|
|
70
|
+
}
|
|
71
|
+
if (limit === 0) {
|
|
72
|
+
return descriptorMap
|
|
73
|
+
}
|
|
74
|
+
if (tempDescriptor.isArray) {
|
|
75
|
+
index = (_a = currentDetail.arrayReference) !== null && _a !== void 0 ? _a : index
|
|
76
|
+
descriptor.details[currentDetail.index].arrayReference = index
|
|
77
|
+
} else {
|
|
78
|
+
index = (_b = currentDetail.objectReference) !== null && _b !== void 0 ? _b : index
|
|
79
|
+
descriptor.details[currentDetail.index].objectReference = index
|
|
80
|
+
}
|
|
81
|
+
tempDescriptor.index = index
|
|
82
|
+
if (existingDescriptorIndex < 0) {
|
|
83
|
+
descriptorMap[index] = descriptorMap[index] ? (0, _assignDescriptor.default)(descriptorMap[index], tempDescriptor) : tempDescriptor
|
|
84
|
+
}
|
|
85
|
+
descriptorMap[descriptor.index] = (0, _assignDescriptor.default)(descriptorMap[descriptor.index], descriptor)
|
|
86
|
+
currentDetail = descriptorMap[descriptor.index].details.find(detail => detail.key === currentDetail.key)
|
|
87
|
+
if (!currentDetail.circular) {
|
|
88
|
+
const newReference = (0, _nextReference.default)(tempDescriptor, -1)
|
|
89
|
+
const newDetail = typeof newReference !== 'undefined' ? tempDescriptor.details[newReference] : null
|
|
90
|
+
return describeReferences(tempDescriptor, newDetail, --limit, returnMap => describeReferences(descriptor, nextDetail, --limit))
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
}
|
|
94
|
+
descriptorMap[descriptor.index] = (0, _assignDescriptor.default)(descriptorMap[descriptor.index], (0, _checkDescriptorComplete.default)(descriptor))
|
|
95
|
+
descriptorMap[descriptor.index] = (0, _checkClearValues.default)(descriptorMap[descriptor.index], keepValues)
|
|
96
|
+
return nextDetail ? describeReferences(descriptor, nextDetail, --limit) : returnCallback(descriptorMap)
|
|
97
|
+
}
|
|
98
|
+
const descriptor = descriptorMap[0]
|
|
99
|
+
const currentReference = (0, _nextReference.default)(descriptor, -1)
|
|
100
|
+
if (typeof currentReference === 'undefined') {
|
|
101
|
+
descriptorMap[0] = (0, _assignDescriptor.default)(descriptorMap[0], (0, _checkDescriptorComplete.default)(descriptor))
|
|
102
|
+
descriptorMap[0] = (0, _checkClearValues.default)(descriptorMap[0], keepValues)
|
|
103
|
+
return descriptorMap
|
|
104
|
+
}
|
|
105
|
+
return describeReferences(descriptor, descriptor.details[currentReference], depthLimit)
|
|
106
|
+
}
|
|
107
|
+
const _default = exports.default = describeObjectMap
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { descriptor } from './samples/descriptor';
|
|
2
|
-
/**
|
|
3
|
-
* Find the index (within `descriptor.details`) of the next referenced property - after `currentReference` - whose
|
|
4
|
-
* own nested object/array still needs its descriptor built. Used to walk through a descriptor's references one at
|
|
5
|
-
* a time while building out a descriptorMap.
|
|
6
|
-
* @memberOf module:objectDescriptors
|
|
7
|
-
* @param {module:objectDescriptors~descriptor} descriptor - The descriptor whose references to search.
|
|
8
|
-
* @param {number} currentReference - The `details` index already processed - search continues after this one.
|
|
9
|
-
* @returns {number|undefined} The next detail index to process, or `undefined` if none remain.
|
|
10
|
-
*/
|
|
11
|
-
declare const nextReference: (descriptor: descriptor, currentReference: number) => number | undefined;
|
|
12
|
-
export default nextReference;
|
|
1
|
+
import { descriptor } from './samples/descriptor';
|
|
2
|
+
/**
|
|
3
|
+
* Find the index (within `descriptor.details`) of the next referenced property - after `currentReference` - whose
|
|
4
|
+
* own nested object/array still needs its descriptor built. Used to walk through a descriptor's references one at
|
|
5
|
+
* a time while building out a descriptorMap.
|
|
6
|
+
* @memberOf module:objectDescriptors
|
|
7
|
+
* @param {module:objectDescriptors~descriptor} descriptor - The descriptor whose references to search.
|
|
8
|
+
* @param {number} currentReference - The `details` index already processed - search continues after this one.
|
|
9
|
+
* @returns {number|undefined} The next detail index to process, or `undefined` if none remain.
|
|
10
|
+
*/
|
|
11
|
+
declare const nextReference: (descriptor: descriptor, currentReference: number) => number | undefined;
|
|
12
|
+
export default nextReference;
|
|
13
13
|
//# sourceMappingURL=nextReference.d.ts.map
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.default = void 0
|
|
7
|
-
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
-
require('core-js/modules/esnext.iterator.find.js')
|
|
9
|
-
const _objectKeys = _interopRequireDefault(require('../objects/objectKeys'))
|
|
10
|
-
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
11
|
-
/**
|
|
12
|
-
* Find the index (within `descriptor.details`) of the next referenced property - after `currentReference` - whose
|
|
13
|
-
* own nested object/array still needs its descriptor built. Used to walk through a descriptor's references one at
|
|
14
|
-
* a time while building out a descriptorMap.
|
|
15
|
-
* @memberOf module:objectDescriptors
|
|
16
|
-
* @param {module:objectDescriptors~descriptor} descriptor - The descriptor whose references to search.
|
|
17
|
-
* @param {number} currentReference - The `details` index already processed - search continues after this one.
|
|
18
|
-
* @returns {number|undefined} The next detail index to process, or `undefined` if none remain.
|
|
19
|
-
*/
|
|
20
|
-
const nextReference = (descriptor, currentReference) => descriptor.references.find(nextRef => {
|
|
21
|
-
if (nextRef <= currentReference) {
|
|
22
|
-
return false
|
|
23
|
-
}
|
|
24
|
-
const val = descriptor.details[nextRef].value[descriptor.details[nextRef].value.length - 1]
|
|
25
|
-
if (typeof val !== 'object' || val === null || typeof val === 'undefined' || descriptor.details[nextRef].circular || descriptor.details[nextRef].isInstance) {
|
|
26
|
-
return false
|
|
27
|
-
}
|
|
28
|
-
return !!(0, _objectKeys.default)(val).length
|
|
29
|
-
})
|
|
30
|
-
const _default = exports.default = nextReference
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js')
|
|
8
|
+
require('core-js/modules/esnext.iterator.find.js')
|
|
9
|
+
const _objectKeys = _interopRequireDefault(require('../objects/objectKeys'))
|
|
10
|
+
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
11
|
+
/**
|
|
12
|
+
* Find the index (within `descriptor.details`) of the next referenced property - after `currentReference` - whose
|
|
13
|
+
* own nested object/array still needs its descriptor built. Used to walk through a descriptor's references one at
|
|
14
|
+
* a time while building out a descriptorMap.
|
|
15
|
+
* @memberOf module:objectDescriptors
|
|
16
|
+
* @param {module:objectDescriptors~descriptor} descriptor - The descriptor whose references to search.
|
|
17
|
+
* @param {number} currentReference - The `details` index already processed - search continues after this one.
|
|
18
|
+
* @returns {number|undefined} The next detail index to process, or `undefined` if none remain.
|
|
19
|
+
*/
|
|
20
|
+
const nextReference = (descriptor, currentReference) => descriptor.references.find(nextRef => {
|
|
21
|
+
if (nextRef <= currentReference) {
|
|
22
|
+
return false
|
|
23
|
+
}
|
|
24
|
+
const val = descriptor.details[nextRef].value[descriptor.details[nextRef].value.length - 1]
|
|
25
|
+
if (typeof val !== 'object' || val === null || typeof val === 'undefined' || descriptor.details[nextRef].circular || descriptor.details[nextRef].isInstance) {
|
|
26
|
+
return false
|
|
27
|
+
}
|
|
28
|
+
return !!(0, _objectKeys.default)(val).length
|
|
29
|
+
})
|
|
30
|
+
const _default = exports.default = nextReference
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { descriptor } from './samples/descriptor';
|
|
2
|
-
/**
|
|
3
|
-
* Check if two descriptors describe the exact same underlying values (not just compatible types, like
|
|
4
|
-
* {@link module:objectDescriptors.compareDescriptor} does) - used to detect genuine circular references, where a
|
|
5
|
-
* nested value's descriptor turns out to be identical to one of its own ancestors.
|
|
6
|
-
* @memberOf module:objectDescriptors
|
|
7
|
-
* @param {module:objectDescriptors~descriptor} descriptor1 - The first descriptor to compare.
|
|
8
|
-
* @param {module:objectDescriptors~descriptor} descriptor2 - The second descriptor to compare.
|
|
9
|
-
* @returns {boolean} True if every detail's values match at the same position.
|
|
10
|
-
*/
|
|
11
|
-
declare const sameDescriptor: (descriptor1: descriptor, descriptor2: descriptor) => boolean;
|
|
12
|
-
export default sameDescriptor;
|
|
1
|
+
import { descriptor } from './samples/descriptor';
|
|
2
|
+
/**
|
|
3
|
+
* Check if two descriptors describe the exact same underlying values (not just compatible types, like
|
|
4
|
+
* {@link module:objectDescriptors.compareDescriptor} does) - used to detect genuine circular references, where a
|
|
5
|
+
* nested value's descriptor turns out to be identical to one of its own ancestors.
|
|
6
|
+
* @memberOf module:objectDescriptors
|
|
7
|
+
* @param {module:objectDescriptors~descriptor} descriptor1 - The first descriptor to compare.
|
|
8
|
+
* @param {module:objectDescriptors~descriptor} descriptor2 - The second descriptor to compare.
|
|
9
|
+
* @returns {boolean} True if every detail's values match at the same position.
|
|
10
|
+
*/
|
|
11
|
+
declare const sameDescriptor: (descriptor1: descriptor, descriptor2: descriptor) => boolean;
|
|
12
|
+
export default sameDescriptor;
|
|
13
13
|
//# sourceMappingURL=sameDescriptor.d.ts.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.default = void 0
|
|
7
|
-
require('core-js/modules/es.array.includes.js')
|
|
8
|
-
require('core-js/modules/esnext.iterator.constructor.js')
|
|
9
|
-
require('core-js/modules/esnext.iterator.every.js')
|
|
10
|
-
require('core-js/modules/esnext.iterator.some.js')
|
|
11
|
-
/**
|
|
12
|
-
* Check if two descriptors describe the exact same underlying values (not just compatible types, like
|
|
13
|
-
* {@link module:objectDescriptors.compareDescriptor} does) - used to detect genuine circular references, where a
|
|
14
|
-
* nested value's descriptor turns out to be identical to one of its own ancestors.
|
|
15
|
-
* @memberOf module:objectDescriptors
|
|
16
|
-
* @param {module:objectDescriptors~descriptor} descriptor1 - The first descriptor to compare.
|
|
17
|
-
* @param {module:objectDescriptors~descriptor} descriptor2 - The second descriptor to compare.
|
|
18
|
-
* @returns {boolean} True if every detail's values match at the same position.
|
|
19
|
-
*/
|
|
20
|
-
const sameDescriptor = (descriptor1, descriptor2) => descriptor1.details.every((detail, index) => detail.value.some(dVal => descriptor2.details[index].value.includes(dVal)))
|
|
21
|
-
const _default = exports.default = sameDescriptor
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
require('core-js/modules/es.array.includes.js')
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js')
|
|
9
|
+
require('core-js/modules/esnext.iterator.every.js')
|
|
10
|
+
require('core-js/modules/esnext.iterator.some.js')
|
|
11
|
+
/**
|
|
12
|
+
* Check if two descriptors describe the exact same underlying values (not just compatible types, like
|
|
13
|
+
* {@link module:objectDescriptors.compareDescriptor} does) - used to detect genuine circular references, where a
|
|
14
|
+
* nested value's descriptor turns out to be identical to one of its own ancestors.
|
|
15
|
+
* @memberOf module:objectDescriptors
|
|
16
|
+
* @param {module:objectDescriptors~descriptor} descriptor1 - The first descriptor to compare.
|
|
17
|
+
* @param {module:objectDescriptors~descriptor} descriptor2 - The second descriptor to compare.
|
|
18
|
+
* @returns {boolean} True if every detail's values match at the same position.
|
|
19
|
+
*/
|
|
20
|
+
const sameDescriptor = (descriptor1, descriptor2) => descriptor1.details.every((detail, index) => detail.value.some(dVal => descriptor2.details[index].value.includes(dVal)))
|
|
21
|
+
const _default = exports.default = sameDescriptor
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { descriptorDetail } from './descriptorDetail';
|
|
2
|
-
/**
|
|
3
|
-
* A flat, serializable description of one object or array's shape - see the {@link module:objectDescriptors} module
|
|
4
|
-
* description for the concept this represents. One `descriptor` covers a single level of nesting; a nested
|
|
5
|
-
* object/array's own shape is a separate `descriptor` elsewhere in the same {@link module:objectDescriptors~descriptorMap},
|
|
6
|
-
* pointed to via the relevant `descriptorDetail`'s `arrayReference`/`objectReference`.
|
|
7
|
-
* @typedef {Object} module:objectDescriptors~descriptor
|
|
8
|
-
* @memberOf module:objectDescriptors
|
|
9
|
-
* @property {number} index - This descriptor's own position in the descriptorMap it belongs to.
|
|
10
|
-
* @property {Array.<module:objectDescriptors~descriptorDetail>} details - One entry per property/element of the
|
|
11
|
-
* described object or array.
|
|
12
|
-
* @property {number} length - The number of properties/elements described (i.e. `details.length`).
|
|
13
|
-
* @property {Array.<string|number>} keys - The property names (or array indexes) described, in the same order as `details`.
|
|
14
|
-
* @property {Array.<number>} references - The `index` values (from `details`) of properties whose own value is
|
|
15
|
-
* itself an object/array, and so has a separate descriptor elsewhere in the map.
|
|
16
|
-
* @property {boolean} isArray - Whether the described value was an array (true) or a plain object (false).
|
|
17
|
-
* @property {boolean} complete - Whether every referenced nested descriptor has actually been resolved yet - false
|
|
18
|
-
* while still being built, true once nothing referenced is left pending.
|
|
19
|
-
*/
|
|
20
|
-
export type descriptor = {
|
|
21
|
-
index: number;
|
|
22
|
-
details: Array<descriptorDetail>;
|
|
23
|
-
length: number;
|
|
24
|
-
keys: Array<number | string>;
|
|
25
|
-
references: Array<number>;
|
|
26
|
-
isArray: boolean;
|
|
27
|
-
complete: boolean;
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* @type {module:objectDescriptors~descriptor}
|
|
31
|
-
* @memberOf module:objectDescriptors
|
|
32
|
-
*/
|
|
33
|
-
declare const descriptorSample: descriptor;
|
|
34
|
-
export default descriptorSample;
|
|
1
|
+
import { descriptorDetail } from './descriptorDetail';
|
|
2
|
+
/**
|
|
3
|
+
* A flat, serializable description of one object or array's shape - see the {@link module:objectDescriptors} module
|
|
4
|
+
* description for the concept this represents. One `descriptor` covers a single level of nesting; a nested
|
|
5
|
+
* object/array's own shape is a separate `descriptor` elsewhere in the same {@link module:objectDescriptors~descriptorMap},
|
|
6
|
+
* pointed to via the relevant `descriptorDetail`'s `arrayReference`/`objectReference`.
|
|
7
|
+
* @typedef {Object} module:objectDescriptors~descriptor
|
|
8
|
+
* @memberOf module:objectDescriptors
|
|
9
|
+
* @property {number} index - This descriptor's own position in the descriptorMap it belongs to.
|
|
10
|
+
* @property {Array.<module:objectDescriptors~descriptorDetail>} details - One entry per property/element of the
|
|
11
|
+
* described object or array.
|
|
12
|
+
* @property {number} length - The number of properties/elements described (i.e. `details.length`).
|
|
13
|
+
* @property {Array.<string|number>} keys - The property names (or array indexes) described, in the same order as `details`.
|
|
14
|
+
* @property {Array.<number>} references - The `index` values (from `details`) of properties whose own value is
|
|
15
|
+
* itself an object/array, and so has a separate descriptor elsewhere in the map.
|
|
16
|
+
* @property {boolean} isArray - Whether the described value was an array (true) or a plain object (false).
|
|
17
|
+
* @property {boolean} complete - Whether every referenced nested descriptor has actually been resolved yet - false
|
|
18
|
+
* while still being built, true once nothing referenced is left pending.
|
|
19
|
+
*/
|
|
20
|
+
export type descriptor = {
|
|
21
|
+
index: number;
|
|
22
|
+
details: Array<descriptorDetail>;
|
|
23
|
+
length: number;
|
|
24
|
+
keys: Array<number | string>;
|
|
25
|
+
references: Array<number>;
|
|
26
|
+
isArray: boolean;
|
|
27
|
+
complete: boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @type {module:objectDescriptors~descriptor}
|
|
31
|
+
* @memberOf module:objectDescriptors
|
|
32
|
+
*/
|
|
33
|
+
declare const descriptorSample: descriptor;
|
|
34
|
+
export default descriptorSample;
|
|
35
35
|
//# sourceMappingURL=descriptor.d.ts.map
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.default = void 0
|
|
7
|
-
const _descriptorDetail = _interopRequireDefault(require('./descriptorDetail'))
|
|
8
|
-
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
9
|
-
/**
|
|
10
|
-
* @type {module:objectDescriptors~descriptor}
|
|
11
|
-
* @memberOf module:objectDescriptors
|
|
12
|
-
*/
|
|
13
|
-
const descriptorSample = {
|
|
14
|
-
index: 0,
|
|
15
|
-
details: [_descriptorDetail.default],
|
|
16
|
-
length: 1,
|
|
17
|
-
keys: [_descriptorDetail.default.key],
|
|
18
|
-
references: [],
|
|
19
|
-
isArray: false,
|
|
20
|
-
complete: true
|
|
21
|
-
}
|
|
22
|
-
const _default = exports.default = descriptorSample
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
const _descriptorDetail = _interopRequireDefault(require('./descriptorDetail'))
|
|
8
|
+
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
9
|
+
/**
|
|
10
|
+
* @type {module:objectDescriptors~descriptor}
|
|
11
|
+
* @memberOf module:objectDescriptors
|
|
12
|
+
*/
|
|
13
|
+
const descriptorSample = {
|
|
14
|
+
index: 0,
|
|
15
|
+
details: [_descriptorDetail.default],
|
|
16
|
+
length: 1,
|
|
17
|
+
keys: [_descriptorDetail.default.key],
|
|
18
|
+
references: [],
|
|
19
|
+
isArray: false,
|
|
20
|
+
complete: true
|
|
21
|
+
}
|
|
22
|
+
const _default = exports.default = descriptorSample
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A description of one single property/element within a {@link module:objectDescriptors~descriptor}.
|
|
3
|
-
* @typedef {Object} module:objectDescriptors~descriptorDetail
|
|
4
|
-
* @memberOf module:objectDescriptors
|
|
5
|
-
* @property {number} index - This detail's own position within its parent descriptor's `details` array.
|
|
6
|
-
* @property {string|number} key - The property name (or array index) this detail describes.
|
|
7
|
-
* @property {Array.<string>} type - The `typeof` result(s) seen for this property's value - more than one entry
|
|
8
|
-
* means the same key held different types across multiple objects that were merged/compared into this descriptor.
|
|
9
|
-
* @property {Array} value - The actual value(s) seen for this property, kept only until the descriptor is marked
|
|
10
|
-
* `complete` (see {@link module:objectDescriptors.checkClearValues}), then cleared to save memory.
|
|
11
|
-
* @property {boolean} nullable - Whether this property's value has been seen as `null`.
|
|
12
|
-
* @property {boolean} optional - Whether this property is missing on some, but not all, of the compared objects.
|
|
13
|
-
* @property {boolean} circular - Whether following this property's own nested value would lead back to an ancestor
|
|
14
|
-
* already being described (a genuine circular reference), rather than a normal, resolvable nested object/array.
|
|
15
|
-
* @property {boolean} isReference - Whether this property's value is itself an object/array, and so has its own
|
|
16
|
-
* separate descriptor elsewhere in the descriptorMap (pointed to by `arrayReference`/`objectReference` below).
|
|
17
|
-
* @property {boolean} isInstance - Whether this property's value is an instance of a custom class (as opposed to a
|
|
18
|
-
* plain Object or Array literal) - such values are treated as opaque and not traced further.
|
|
19
|
-
* @property {null|number} arrayReference - If this property's value is an array, the index (within the
|
|
20
|
-
* descriptorMap) of that array's own descriptor; `null` otherwise.
|
|
21
|
-
* @property {null|number} objectReference - If this property's value is a plain object, the index (within the
|
|
22
|
-
* descriptorMap) of that object's own descriptor; `null` otherwise.
|
|
23
|
-
*/
|
|
24
|
-
export type descriptorDetail = {
|
|
25
|
-
index: number;
|
|
26
|
-
key: number | string;
|
|
27
|
-
type: Array<string>;
|
|
28
|
-
value: Array<any>;
|
|
29
|
-
nullable: boolean;
|
|
30
|
-
optional: boolean;
|
|
31
|
-
circular: boolean;
|
|
32
|
-
isReference: boolean;
|
|
33
|
-
isInstance: boolean;
|
|
34
|
-
arrayReference: number | null;
|
|
35
|
-
objectReference: number | null;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* @type {module:objectDescriptors~descriptorDetail}
|
|
39
|
-
* @memberOf module:objectDescriptors
|
|
40
|
-
*/
|
|
41
|
-
declare const descriptorDetailSample: descriptorDetail;
|
|
42
|
-
export default descriptorDetailSample;
|
|
1
|
+
/**
|
|
2
|
+
* A description of one single property/element within a {@link module:objectDescriptors~descriptor}.
|
|
3
|
+
* @typedef {Object} module:objectDescriptors~descriptorDetail
|
|
4
|
+
* @memberOf module:objectDescriptors
|
|
5
|
+
* @property {number} index - This detail's own position within its parent descriptor's `details` array.
|
|
6
|
+
* @property {string|number} key - The property name (or array index) this detail describes.
|
|
7
|
+
* @property {Array.<string>} type - The `typeof` result(s) seen for this property's value - more than one entry
|
|
8
|
+
* means the same key held different types across multiple objects that were merged/compared into this descriptor.
|
|
9
|
+
* @property {Array} value - The actual value(s) seen for this property, kept only until the descriptor is marked
|
|
10
|
+
* `complete` (see {@link module:objectDescriptors.checkClearValues}), then cleared to save memory.
|
|
11
|
+
* @property {boolean} nullable - Whether this property's value has been seen as `null`.
|
|
12
|
+
* @property {boolean} optional - Whether this property is missing on some, but not all, of the compared objects.
|
|
13
|
+
* @property {boolean} circular - Whether following this property's own nested value would lead back to an ancestor
|
|
14
|
+
* already being described (a genuine circular reference), rather than a normal, resolvable nested object/array.
|
|
15
|
+
* @property {boolean} isReference - Whether this property's value is itself an object/array, and so has its own
|
|
16
|
+
* separate descriptor elsewhere in the descriptorMap (pointed to by `arrayReference`/`objectReference` below).
|
|
17
|
+
* @property {boolean} isInstance - Whether this property's value is an instance of a custom class (as opposed to a
|
|
18
|
+
* plain Object or Array literal) - such values are treated as opaque and not traced further.
|
|
19
|
+
* @property {null|number} arrayReference - If this property's value is an array, the index (within the
|
|
20
|
+
* descriptorMap) of that array's own descriptor; `null` otherwise.
|
|
21
|
+
* @property {null|number} objectReference - If this property's value is a plain object, the index (within the
|
|
22
|
+
* descriptorMap) of that object's own descriptor; `null` otherwise.
|
|
23
|
+
*/
|
|
24
|
+
export type descriptorDetail = {
|
|
25
|
+
index: number;
|
|
26
|
+
key: number | string;
|
|
27
|
+
type: Array<string>;
|
|
28
|
+
value: Array<any>;
|
|
29
|
+
nullable: boolean;
|
|
30
|
+
optional: boolean;
|
|
31
|
+
circular: boolean;
|
|
32
|
+
isReference: boolean;
|
|
33
|
+
isInstance: boolean;
|
|
34
|
+
arrayReference: number | null;
|
|
35
|
+
objectReference: number | null;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @type {module:objectDescriptors~descriptorDetail}
|
|
39
|
+
* @memberOf module:objectDescriptors
|
|
40
|
+
*/
|
|
41
|
+
declare const descriptorDetailSample: descriptorDetail;
|
|
42
|
+
export default descriptorDetailSample;
|
|
43
43
|
//# sourceMappingURL=descriptorDetail.d.ts.map
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
})
|
|
6
|
-
exports.default = void 0
|
|
7
|
-
/**
|
|
8
|
-
* @type {module:objectDescriptors~descriptorDetail}
|
|
9
|
-
* @memberOf module:objectDescriptors
|
|
10
|
-
*/
|
|
11
|
-
const descriptorDetailSample = {
|
|
12
|
-
index: 0,
|
|
13
|
-
key: 'keyName',
|
|
14
|
-
type: ['string'],
|
|
15
|
-
value: [''],
|
|
16
|
-
nullable: false,
|
|
17
|
-
optional: false,
|
|
18
|
-
circular: false,
|
|
19
|
-
isReference: false,
|
|
20
|
-
isInstance: false,
|
|
21
|
-
arrayReference: null,
|
|
22
|
-
objectReference: null
|
|
23
|
-
}
|
|
24
|
-
const _default = exports.default = descriptorDetailSample
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.default = void 0
|
|
7
|
+
/**
|
|
8
|
+
* @type {module:objectDescriptors~descriptorDetail}
|
|
9
|
+
* @memberOf module:objectDescriptors
|
|
10
|
+
*/
|
|
11
|
+
const descriptorDetailSample = {
|
|
12
|
+
index: 0,
|
|
13
|
+
key: 'keyName',
|
|
14
|
+
type: ['string'],
|
|
15
|
+
value: [''],
|
|
16
|
+
nullable: false,
|
|
17
|
+
optional: false,
|
|
18
|
+
circular: false,
|
|
19
|
+
isReference: false,
|
|
20
|
+
isInstance: false,
|
|
21
|
+
arrayReference: null,
|
|
22
|
+
objectReference: null
|
|
23
|
+
}
|
|
24
|
+
const _default = exports.default = descriptorDetailSample
|