si-funciona 2.6.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/README.md +48 -19
  2. package/browser/siFunciona.js +80 -77
  3. package/browser/siFunciona.min.js +1 -1
  4. package/dist/helpers/arrays/BasicQueue.d.ts +64 -64
  5. package/dist/helpers/arrays/BasicQueue.js +61 -61
  6. package/dist/helpers/arrays/addUniqueToArray.d.ts +9 -9
  7. package/dist/helpers/arrays/addUniqueToArray.js +16 -16
  8. package/dist/helpers/arrays/buildArray.d.ts +10 -10
  9. package/dist/helpers/arrays/buildArray.js +25 -25
  10. package/dist/helpers/arrays/buildArrayOfReferences.d.ts +10 -10
  11. package/dist/helpers/arrays/buildArrayOfReferences.js +22 -22
  12. package/dist/helpers/arrays/compareArrays.d.ts +96 -96
  13. package/dist/helpers/arrays/compareArrays.js +96 -96
  14. package/dist/helpers/arrays/mergeArrays.d.ts +8 -8
  15. package/dist/helpers/arrays/mergeArrays.js +21 -21
  16. package/dist/helpers/arrays/uniqueArray.d.ts +8 -8
  17. package/dist/helpers/arrays/uniqueArray.js +16 -16
  18. package/dist/helpers/arrays.d.ts +27 -27
  19. package/dist/helpers/arrays.js +74 -74
  20. package/dist/helpers/descriptors/assignDescriptor.d.ts +13 -13
  21. package/dist/helpers/descriptors/assignDescriptor.js +57 -57
  22. package/dist/helpers/descriptors/assignDescriptorDetail.d.ts +13 -13
  23. package/dist/helpers/descriptors/assignDescriptorDetail.js +36 -36
  24. package/dist/helpers/descriptors/checkClearValues.d.ts +11 -11
  25. package/dist/helpers/descriptors/checkClearValues.js +20 -20
  26. package/dist/helpers/descriptors/checkDescriptorComplete.d.ts +10 -10
  27. package/dist/helpers/descriptors/checkDescriptorComplete.js +19 -19
  28. package/dist/helpers/descriptors/cloneDescriptor.d.ts +9 -9
  29. package/dist/helpers/descriptors/cloneDescriptor.js +35 -35
  30. package/dist/helpers/descriptors/cloneDescriptorDetail.d.ts +9 -9
  31. package/dist/helpers/descriptors/cloneDescriptorDetail.js +26 -26
  32. package/dist/helpers/descriptors/compareDescriptor.d.ts +12 -12
  33. package/dist/helpers/descriptors/compareDescriptor.js +32 -32
  34. package/dist/helpers/descriptors/describeObject.d.ts +14 -14
  35. package/dist/helpers/descriptors/describeObject.js +52 -52
  36. package/dist/helpers/descriptors/describeObjectDetail.d.ts +13 -13
  37. package/dist/helpers/descriptors/describeObjectDetail.js +37 -37
  38. package/dist/helpers/descriptors/describeObjectMap.d.ts +35 -35
  39. package/dist/helpers/descriptors/describeObjectMap.js +107 -107
  40. package/dist/helpers/descriptors/nextReference.d.ts +12 -12
  41. package/dist/helpers/descriptors/nextReference.js +30 -30
  42. package/dist/helpers/descriptors/sameDescriptor.d.ts +12 -12
  43. package/dist/helpers/descriptors/sameDescriptor.js +21 -21
  44. package/dist/helpers/descriptors/samples/descriptor.d.ts +34 -34
  45. package/dist/helpers/descriptors/samples/descriptor.js +22 -22
  46. package/dist/helpers/descriptors/samples/descriptorDetail.d.ts +42 -42
  47. package/dist/helpers/descriptors/samples/descriptorDetail.js +24 -24
  48. package/dist/helpers/descriptors/samples/descriptorMap.d.ts +16 -16
  49. package/dist/helpers/descriptors/samples/descriptorMap.js +14 -14
  50. package/dist/helpers/descriptors/samples/mappedDescriptorMap.d.ts +10 -10
  51. package/dist/helpers/descriptors/samples/mappedDescriptorMap.js +287 -287
  52. package/dist/helpers/descriptors.d.ts +56 -56
  53. package/dist/helpers/descriptors.js +129 -129
  54. package/dist/helpers/functions/callWithParams.d.ts +10 -10
  55. package/dist/helpers/functions/callWithParams.js +16 -16
  56. package/dist/helpers/functions/curry.d.ts +10 -10
  57. package/dist/helpers/functions/curry.js +16 -16
  58. package/dist/helpers/functions/delay.d.ts +20 -20
  59. package/dist/helpers/functions/delay.js +31 -31
  60. package/dist/helpers/functions/makeBasicQueue.d.ts +9 -9
  61. package/dist/helpers/functions/makeBasicQueue.js +18 -18
  62. package/dist/helpers/functions/onBodyLoad.d.ts +9 -9
  63. package/dist/helpers/functions/onBodyLoad.js +75 -75
  64. package/dist/helpers/functions/pipe.d.ts +9 -9
  65. package/dist/helpers/functions/pipe.js +17 -17
  66. package/dist/helpers/functions/preloadParams.d.ts +19 -19
  67. package/dist/helpers/functions/preloadParams.js +20 -20
  68. package/dist/helpers/functions/queueManager.d.ts +48 -48
  69. package/dist/helpers/functions/queueManager.js +123 -123
  70. package/dist/helpers/functions/queueTimeout.d.ts +20 -20
  71. package/dist/helpers/functions/queueTimeout.js +22 -22
  72. package/dist/helpers/functions/relevancyFilter.d.ts +34 -34
  73. package/dist/helpers/functions/relevancyFilter.js +33 -33
  74. package/dist/helpers/functions/trace.d.ts +13 -13
  75. package/dist/helpers/functions/trace.js +24 -24
  76. package/dist/helpers/functions.d.ts +40 -40
  77. package/dist/helpers/functions.js +105 -105
  78. package/dist/helpers/numbers/absoluteMax.d.ts +9 -9
  79. package/dist/helpers/numbers/absoluteMax.js +15 -15
  80. package/dist/helpers/numbers/absoluteMin.d.ts +9 -9
  81. package/dist/helpers/numbers/absoluteMin.js +15 -15
  82. package/dist/helpers/numbers/compare.d.ts +12 -12
  83. package/dist/helpers/numbers/compare.js +18 -18
  84. package/dist/helpers/numbers/greatestCommonDivisor.d.ts +9 -9
  85. package/dist/helpers/numbers/greatestCommonDivisor.js +15 -15
  86. package/dist/helpers/numbers/leastCommonMultiple.d.ts +9 -9
  87. package/dist/helpers/numbers/leastCommonMultiple.js +17 -17
  88. package/dist/helpers/numbers/lowestCommonDenominator.d.ts +9 -9
  89. package/dist/helpers/numbers/lowestCommonDenominator.js +19 -19
  90. package/dist/helpers/numbers/randomInteger.d.ts +18 -12
  91. package/dist/helpers/numbers/randomInteger.js +24 -18
  92. package/dist/helpers/numbers/randomNumber.d.ts +13 -12
  93. package/dist/helpers/numbers/randomNumber.js +19 -18
  94. package/dist/helpers/numbers/simplestRatio.d.ts +8 -8
  95. package/dist/helpers/numbers/simplestRatio.js +28 -28
  96. package/dist/helpers/numbers.d.ts +30 -30
  97. package/dist/helpers/numbers.js +89 -89
  98. package/dist/helpers/objects/cloneObject.d.ts +2 -4
  99. package/dist/helpers/objects/cloneObject.js +2 -4
  100. package/dist/helpers/objects/dotGet.d.ts +11 -11
  101. package/dist/helpers/objects/dotGet.js +59 -59
  102. package/dist/helpers/objects/dotNotate.d.ts +27 -27
  103. package/dist/helpers/objects/dotNotate.js +79 -79
  104. package/dist/helpers/objects/dotSet.d.ts +11 -11
  105. package/dist/helpers/objects/dotSet.js +53 -53
  106. package/dist/helpers/objects/dotUnset.d.ts +10 -10
  107. package/dist/helpers/objects/dotUnset.js +52 -52
  108. package/dist/helpers/objects/emptyObject.d.ts +8 -8
  109. package/dist/helpers/objects/emptyObject.js +17 -17
  110. package/dist/helpers/objects/filterObject.d.ts +26 -26
  111. package/dist/helpers/objects/filterObject.js +33 -33
  112. package/dist/helpers/objects/isCloneable.d.ts +8 -8
  113. package/dist/helpers/objects/isCloneable.js +16 -16
  114. package/dist/helpers/objects/isEqual.d.ts +16 -16
  115. package/dist/helpers/objects/isEqual.js +100 -100
  116. package/dist/helpers/objects/isInstanceObject.d.ts +8 -8
  117. package/dist/helpers/objects/isInstanceObject.js +26 -26
  118. package/dist/helpers/objects/isObject.d.ts +8 -8
  119. package/dist/helpers/objects/isObject.js +14 -14
  120. package/dist/helpers/objects/mapObject.d.ts +25 -25
  121. package/dist/helpers/objects/mapObject.js +25 -25
  122. package/dist/helpers/objects/mergeObjects.d.ts +12 -12
  123. package/dist/helpers/objects/mergeObjects.js +19 -19
  124. package/dist/helpers/objects/mergeObjectsBase.d.ts +9 -6
  125. package/dist/helpers/objects/mergeObjectsBase.js +59 -61
  126. package/dist/helpers/objects/mergeObjectsBase.min.js +1 -1
  127. package/dist/helpers/objects/mergeObjectsMutable.d.ts +12 -12
  128. package/dist/helpers/objects/mergeObjectsMutable.js +17 -17
  129. package/dist/helpers/objects/objectKeys.d.ts +13 -13
  130. package/dist/helpers/objects/objectKeys.js +39 -39
  131. package/dist/helpers/objects/objectValues.d.ts +13 -13
  132. package/dist/helpers/objects/objectValues.js +20 -20
  133. package/dist/helpers/objects/reduceObject.d.ts +30 -30
  134. package/dist/helpers/objects/reduceObject.js +25 -25
  135. package/dist/helpers/objects/setAndReturnValue.d.ts +13 -13
  136. package/dist/helpers/objects/setAndReturnValue.js +19 -19
  137. package/dist/helpers/objects/setValue.d.ts +14 -14
  138. package/dist/helpers/objects/setValue.js +21 -21
  139. package/dist/helpers/objects.d.ts +1 -1
  140. package/dist/helpers/objects.js +177 -177
  141. package/dist/helpers/strings/camelCase.d.ts +8 -8
  142. package/dist/helpers/strings/camelCase.js +19 -19
  143. package/dist/helpers/strings/kabobCase.d.ts +8 -8
  144. package/dist/helpers/strings/kabobCase.js +18 -18
  145. package/dist/helpers/strings/makeFilepath.d.ts +9 -9
  146. package/dist/helpers/strings/makeFilepath.js +49 -49
  147. package/dist/helpers/strings/makeRelativePath.d.ts +9 -9
  148. package/dist/helpers/strings/makeRelativePath.js +43 -43
  149. package/dist/helpers/strings/regexEscape.d.ts +8 -8
  150. package/dist/helpers/strings/regexEscape.js +15 -15
  151. package/dist/helpers/strings/snakeCase.d.ts +8 -8
  152. package/dist/helpers/strings/snakeCase.js +18 -18
  153. package/dist/helpers/strings/strAfter.d.ts +9 -9
  154. package/dist/helpers/strings/strAfter.js +18 -18
  155. package/dist/helpers/strings/strAfterLast.d.ts +9 -9
  156. package/dist/helpers/strings/strAfterLast.js +18 -18
  157. package/dist/helpers/strings/strBefore.d.ts +9 -9
  158. package/dist/helpers/strings/strBefore.js +18 -18
  159. package/dist/helpers/strings/strBeforeLast.d.ts +9 -9
  160. package/dist/helpers/strings/strBeforeLast.js +18 -18
  161. package/dist/helpers/strings/titleCase.d.ts +8 -8
  162. package/dist/helpers/strings/titleCase.js +19 -19
  163. package/dist/helpers/strings/ucFirst.d.ts +8 -8
  164. package/dist/helpers/strings/ucFirst.js +14 -14
  165. package/dist/helpers/strings/words.d.ts +9 -9
  166. package/dist/helpers/strings/words.js +15 -15
  167. package/dist/helpers/strings.d.ts +38 -38
  168. package/dist/helpers/strings.js +121 -121
  169. package/dist/main.d.ts +15 -15
  170. package/dist/main.js +103 -103
  171. package/package.json +4 -4
@@ -1,15 +1,15 @@
1
- import { descriptor } from './samples/descriptor';
2
- export type describeableObject = Array<any> | {
3
- [k: number | string]: any;
4
- };
5
- /**
6
- * Trace a single object or array (not its nested objects/arrays - see
7
- * {@link module:objectDescriptors.describeObjectMap} for that) and return the descriptor which defines its own
8
- * structure and attributes.
9
- * @memberOf module:objectDescriptors
10
- * @param {Object|Array} object - The object or array to describe.
11
- * @returns {module:objectDescriptors~descriptor}
12
- */
13
- declare const describeObject: (object: describeableObject) => descriptor;
14
- export default describeObject;
1
+ import { descriptor } from './samples/descriptor';
2
+ export type describeableObject = Array<any> | {
3
+ [k: number | string]: any;
4
+ };
5
+ /**
6
+ * Trace a single object or array (not its nested objects/arrays - see
7
+ * {@link module:objectDescriptors.describeObjectMap} for that) and return the descriptor which defines its own
8
+ * structure and attributes.
9
+ * @memberOf module:objectDescriptors
10
+ * @param {Object|Array} object - The object or array to describe.
11
+ * @returns {module:objectDescriptors~descriptor}
12
+ */
13
+ declare const describeObject: (object: describeableObject) => descriptor;
14
+ export default describeObject;
15
15
  //# sourceMappingURL=describeObject.d.ts.map
@@ -1,52 +1,52 @@
1
- 'use strict'
2
-
3
- Object.defineProperty(exports, '__esModule', {
4
- value: true
5
- })
6
- exports.default = void 0
7
- const _assignDescriptorDetail = _interopRequireDefault(require('./assignDescriptorDetail'))
8
- const _describeObjectDetail = _interopRequireDefault(require('./describeObjectDetail'))
9
- const _objectKeys = _interopRequireDefault(require('../objects/objectKeys'))
10
- function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
11
- /**
12
- * Trace a single object or array (not its nested objects/arrays - see
13
- * {@link module:objectDescriptors.describeObjectMap} for that) and return the descriptor which defines its own
14
- * structure and attributes.
15
- * @memberOf module:objectDescriptors
16
- * @param {Object|Array} object - The object or array to describe.
17
- * @returns {module:objectDescriptors~descriptor}
18
- */
19
- const describeObject = object => {
20
- const descriptor = {
21
- index: 0,
22
- details: [],
23
- length: 0,
24
- keys: [],
25
- references: [],
26
- isArray: false,
27
- complete: false
28
- }
29
- const keys = (0, _objectKeys.default)(object)
30
- for (let i = 0; i < keys.length; ++i) {
31
- const key = keys[i]
32
- // @ts-ignore
33
- const newDetail = (0, _describeObjectDetail.default)(object[key], key, descriptor.length++)
34
- if (typeof key === 'number' && descriptor.details.length) {
35
- descriptor.details[0] = (0, _assignDescriptorDetail.default)(descriptor.details[0], newDetail)
36
- descriptor.keys = [0]
37
- if (newDetail.isReference) {
38
- descriptor.references = [0]
39
- }
40
- continue
41
- }
42
- descriptor.details.push(newDetail)
43
- descriptor.keys.push(newDetail.key)
44
- if (newDetail.isReference) {
45
- descriptor.references.push(newDetail.index)
46
- }
47
- }
48
- descriptor.isArray = Array.isArray(object)
49
- descriptor.complete = !descriptor.references.length
50
- return descriptor
51
- }
52
- const _default = exports.default = describeObject
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
6
+ exports.default = void 0
7
+ const _assignDescriptorDetail = _interopRequireDefault(require('./assignDescriptorDetail'))
8
+ const _describeObjectDetail = _interopRequireDefault(require('./describeObjectDetail'))
9
+ const _objectKeys = _interopRequireDefault(require('../objects/objectKeys'))
10
+ function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
11
+ /**
12
+ * Trace a single object or array (not its nested objects/arrays - see
13
+ * {@link module:objectDescriptors.describeObjectMap} for that) and return the descriptor which defines its own
14
+ * structure and attributes.
15
+ * @memberOf module:objectDescriptors
16
+ * @param {Object|Array} object - The object or array to describe.
17
+ * @returns {module:objectDescriptors~descriptor}
18
+ */
19
+ const describeObject = object => {
20
+ const descriptor = {
21
+ index: 0,
22
+ details: [],
23
+ length: 0,
24
+ keys: [],
25
+ references: [],
26
+ isArray: false,
27
+ complete: false
28
+ }
29
+ const keys = (0, _objectKeys.default)(object)
30
+ for (let i = 0; i < keys.length; ++i) {
31
+ const key = keys[i]
32
+ // @ts-ignore
33
+ const newDetail = (0, _describeObjectDetail.default)(object[key], key, descriptor.length++)
34
+ if (typeof key === 'number' && descriptor.details.length) {
35
+ descriptor.details[0] = (0, _assignDescriptorDetail.default)(descriptor.details[0], newDetail)
36
+ descriptor.keys = [0]
37
+ if (newDetail.isReference) {
38
+ descriptor.references = [0]
39
+ }
40
+ continue
41
+ }
42
+ descriptor.details.push(newDetail)
43
+ descriptor.keys.push(newDetail.key)
44
+ if (newDetail.isReference) {
45
+ descriptor.references.push(newDetail.index)
46
+ }
47
+ }
48
+ descriptor.isArray = Array.isArray(object)
49
+ descriptor.complete = !descriptor.references.length
50
+ return descriptor
51
+ }
52
+ const _default = exports.default = describeObject
@@ -1,14 +1,14 @@
1
- import { descriptorDetail } from './samples/descriptorDetail';
2
- /**
3
- * Trace a single property's value and produce the descriptorDetail describing it (type, nullability, whether it
4
- * references a nested object/array, etc.) - the per-property building block used by
5
- * {@link module:objectDescriptors.describeObject}.
6
- * @memberOf module:objectDescriptors
7
- * @param {*} value - The property's value to describe.
8
- * @param {string|number} [key=0] - The property name (or array index) this value belongs to.
9
- * @param {number} [index=0] - This detail's intended position within its parent descriptor's `details` array.
10
- * @returns {module:objectDescriptors~descriptorDetail}
11
- */
12
- declare const describeObjectDetail: (value: any, key?: number | string, index?: number) => descriptorDetail;
13
- export default describeObjectDetail;
1
+ import { descriptorDetail } from './samples/descriptorDetail';
2
+ /**
3
+ * Trace a single property's value and produce the descriptorDetail describing it (type, nullability, whether it
4
+ * references a nested object/array, etc.) - the per-property building block used by
5
+ * {@link module:objectDescriptors.describeObject}.
6
+ * @memberOf module:objectDescriptors
7
+ * @param {*} value - The property's value to describe.
8
+ * @param {string|number} [key=0] - The property name (or array index) this value belongs to.
9
+ * @param {number} [index=0] - This detail's intended position within its parent descriptor's `details` array.
10
+ * @returns {module:objectDescriptors~descriptorDetail}
11
+ */
12
+ declare const describeObjectDetail: (value: any, key?: number | string, index?: number) => descriptorDetail;
13
+ export default describeObjectDetail;
14
14
  //# sourceMappingURL=describeObjectDetail.d.ts.map
@@ -1,37 +1,37 @@
1
- 'use strict'
2
-
3
- Object.defineProperty(exports, '__esModule', {
4
- value: true
5
- })
6
- exports.default = void 0
7
- const _emptyObject = _interopRequireDefault(require('../objects/emptyObject'))
8
- const _isCloneable = _interopRequireDefault(require('../objects/isCloneable'))
9
- const _isInstanceObject = _interopRequireDefault(require('../objects/isInstanceObject'))
10
- function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
11
- /**
12
- * Trace a single property's value and produce the descriptorDetail describing it (type, nullability, whether it
13
- * references a nested object/array, etc.) - the per-property building block used by
14
- * {@link module:objectDescriptors.describeObject}.
15
- * @memberOf module:objectDescriptors
16
- * @param {*} value - The property's value to describe.
17
- * @param {string|number} [key=0] - The property name (or array index) this value belongs to.
18
- * @param {number} [index=0] - This detail's intended position within its parent descriptor's `details` array.
19
- * @returns {module:objectDescriptors~descriptorDetail}
20
- */
21
- const describeObjectDetail = (value, key = 0, index = 0) => {
22
- const type = typeof value
23
- return {
24
- index,
25
- key,
26
- type: [type],
27
- value: [value],
28
- nullable: value === null,
29
- optional: false,
30
- circular: false,
31
- isReference: (0, _isCloneable.default)(value) && !(0, _emptyObject.default)(value),
32
- isInstance: (0, _isInstanceObject.default)(value),
33
- arrayReference: null,
34
- objectReference: null
35
- }
36
- }
37
- const _default = exports.default = describeObjectDetail
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
6
+ exports.default = void 0
7
+ const _emptyObject = _interopRequireDefault(require('../objects/emptyObject'))
8
+ const _isCloneable = _interopRequireDefault(require('../objects/isCloneable'))
9
+ const _isInstanceObject = _interopRequireDefault(require('../objects/isInstanceObject'))
10
+ function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
11
+ /**
12
+ * Trace a single property's value and produce the descriptorDetail describing it (type, nullability, whether it
13
+ * references a nested object/array, etc.) - the per-property building block used by
14
+ * {@link module:objectDescriptors.describeObject}.
15
+ * @memberOf module:objectDescriptors
16
+ * @param {*} value - The property's value to describe.
17
+ * @param {string|number} [key=0] - The property name (or array index) this value belongs to.
18
+ * @param {number} [index=0] - This detail's intended position within its parent descriptor's `details` array.
19
+ * @returns {module:objectDescriptors~descriptorDetail}
20
+ */
21
+ const describeObjectDetail = (value, key = 0, index = 0) => {
22
+ const type = typeof value
23
+ return {
24
+ index,
25
+ key,
26
+ type: [type],
27
+ value: [value],
28
+ nullable: value === null,
29
+ optional: false,
30
+ circular: false,
31
+ isReference: (0, _isCloneable.default)(value) && !(0, _emptyObject.default)(value),
32
+ isInstance: (0, _isInstanceObject.default)(value),
33
+ arrayReference: null,
34
+ objectReference: null
35
+ }
36
+ }
37
+ const _default = exports.default = describeObjectDetail
@@ -1,36 +1,36 @@
1
- import { describeableObject } from './describeObject';
2
- import { descriptorMap } from './samples/descriptorMap';
3
- type describeObjectMapOptions = {
4
- mapLimit?: number;
5
- depthLimit?: number;
6
- keepValues?: boolean;
7
- };
8
- /**
9
- * Trace out the entire object including nested objects, producing a flat descriptorMap - see the
10
- * {@link module:objectDescriptors} module description for what a descriptor represents and why it's flat. This is
11
- * the main entry point into this module: start here to describe a real object/array before comparing, merging, or
12
- * inspecting its structure with the other functions in this module.
13
- * @example
14
- * describeObjectMap({ name: 'example', tags: ['a', 'b'] })
15
- * // [
16
- * // { index: 0, details: [...], length: 2, keys: ['name', 'tags'], references: [1], isArray: false, complete: true },
17
- * // { index: 1, details: [...], length: 2, keys: [0], references: [], isArray: true, complete: true }
18
- * // ]
19
- * // descriptorMap[0] describes the top-level object; its 'tags' property is a reference (references: [1]) to
20
- * // descriptorMap[1], which separately describes that nested array. descriptorMap[1]'s own `length` (2) reflects
21
- * // the array's actual length, but `keys` has only one entry (0) since both elements share the same type
22
- * // ('string') and are described together by a single, representative descriptorDetail.
23
- * @memberOf module:objectDescriptors
24
- * @param {Object|Array} object - The real object or array to describe.
25
- * @param {Object} [options={}]
26
- * @param {number} [options.mapLimit=1000000000] - Stop describing further nested references once the map reaches
27
- * this many descriptors - a safety limit for extremely large or deeply-referenced structures.
28
- * @param {number} [options.depthLimit=-1] - How many levels of nested objects/arrays to describe; `-1` means no
29
- * limit, `0` describes only the top level, etc.
30
- * @param {boolean} [options.keepValues=false] - By default, each detail's actual values are cleared once its
31
- * descriptor is complete (to save memory) - set true to keep them.
32
- * @returns {module:objectDescriptors~descriptorMap}
33
- */
34
- declare const describeObjectMap: (object: describeableObject, { mapLimit, depthLimit, keepValues }?: describeObjectMapOptions) => descriptorMap;
35
- export default describeObjectMap;
1
+ import { describeableObject } from './describeObject';
2
+ import { descriptorMap } from './samples/descriptorMap';
3
+ type describeObjectMapOptions = {
4
+ mapLimit?: number;
5
+ depthLimit?: number;
6
+ keepValues?: boolean;
7
+ };
8
+ /**
9
+ * Trace out the entire object including nested objects, producing a flat descriptorMap - see the
10
+ * {@link module:objectDescriptors} module description for what a descriptor represents and why it's flat. This is
11
+ * the main entry point into this module: start here to describe a real object/array before comparing, merging, or
12
+ * inspecting its structure with the other functions in this module.
13
+ * @example
14
+ * describeObjectMap({ name: 'example', tags: ['a', 'b'] })
15
+ * // [
16
+ * // { index: 0, details: [...], length: 2, keys: ['name', 'tags'], references: [1], isArray: false, complete: true },
17
+ * // { index: 1, details: [...], length: 2, keys: [0], references: [], isArray: true, complete: true }
18
+ * // ]
19
+ * // descriptorMap[0] describes the top-level object; its 'tags' property is a reference (references: [1]) to
20
+ * // descriptorMap[1], which separately describes that nested array. descriptorMap[1]'s own `length` (2) reflects
21
+ * // the array's actual length, but `keys` has only one entry (0) since both elements share the same type
22
+ * // ('string') and are described together by a single, representative descriptorDetail.
23
+ * @memberOf module:objectDescriptors
24
+ * @param {Object|Array} object - The real object or array to describe.
25
+ * @param {Object} [options={}]
26
+ * @param {number} [options.mapLimit=1000000000] - Stop describing further nested references once the map reaches
27
+ * this many descriptors - a safety limit for extremely large or deeply-referenced structures.
28
+ * @param {number} [options.depthLimit=-1] - How many levels of nested objects/arrays to describe; `-1` means no
29
+ * limit, `0` describes only the top level, etc.
30
+ * @param {boolean} [options.keepValues=false] - By default, each detail's actual values are cleared once its
31
+ * descriptor is complete (to save memory) - set true to keep them.
32
+ * @returns {module:objectDescriptors~descriptorMap}
33
+ */
34
+ declare const describeObjectMap: (object: describeableObject, { mapLimit, depthLimit, keepValues }?: describeObjectMapOptions) => descriptorMap;
35
+ export default describeObjectMap;
36
36
  //# sourceMappingURL=describeObjectMap.d.ts.map
@@ -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