@fgv/ts-utils 5.0.2-0 → 5.1.0-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 (105) hide show
  1. package/CHANGELOG.json +21 -0
  2. package/README.md +152 -84
  3. package/dist/index.js +2 -2
  4. package/dist/packlets/base/messageAggregator.js +6 -6
  5. package/dist/packlets/base/result.js +39 -39
  6. package/dist/packlets/base/utils.js +47 -0
  7. package/dist/packlets/collections/aggregatedResultMap.js +722 -0
  8. package/dist/packlets/collections/collector.js +9 -9
  9. package/dist/packlets/collections/collectorValidator.js +4 -4
  10. package/dist/packlets/collections/converters.js +39 -0
  11. package/dist/packlets/collections/convertingCollectorValidator.js +3 -3
  12. package/dist/packlets/collections/convertingResultMap.js +208 -0
  13. package/dist/packlets/collections/index.js +4 -0
  14. package/dist/packlets/collections/keyValueConverters.js +1 -4
  15. package/dist/packlets/collections/readOnlyConvertingResultMap.js +193 -0
  16. package/dist/packlets/collections/resultMapValidator.js +50 -6
  17. package/dist/packlets/collections/validatingConvertingResultMap.js +78 -0
  18. package/dist/packlets/conversion/advancedConverters.js +249 -0
  19. package/dist/packlets/conversion/baseConverter.js +23 -16
  20. package/dist/packlets/conversion/basicConverters.js +571 -0
  21. package/dist/packlets/conversion/converters.js +3 -617
  22. package/dist/packlets/conversion/defaultingConverter.js +21 -15
  23. package/dist/packlets/logging/bootLogger.js +122 -0
  24. package/dist/packlets/logging/index.js +1 -0
  25. package/dist/packlets/logging/logReporter.js +32 -1
  26. package/dist/packlets/logging/logger.js +25 -5
  27. package/dist/packlets/validation/classes.js +1 -0
  28. package/dist/packlets/validation/compositeId.js +60 -0
  29. package/dist/packlets/validation/field.js +1 -1
  30. package/dist/packlets/validation/genericValidator.js +24 -10
  31. package/dist/packlets/validation/object.js +3 -6
  32. package/dist/packlets/validation/validators.js +12 -0
  33. package/dist/ts-utils.d.ts +1633 -200
  34. package/dist/tsdoc-metadata.json +1 -1
  35. package/lib/index.d.ts +2 -2
  36. package/lib/index.js +2 -1
  37. package/lib/packlets/base/mapResults.d.ts +3 -3
  38. package/lib/packlets/base/messageAggregator.d.ts +6 -6
  39. package/lib/packlets/base/messageAggregator.js +6 -6
  40. package/lib/packlets/base/result.d.ts +74 -51
  41. package/lib/packlets/base/result.js +39 -39
  42. package/lib/packlets/base/utils.d.ts +42 -0
  43. package/lib/packlets/base/utils.js +52 -0
  44. package/lib/packlets/collections/aggregatedResultMap.d.ts +433 -0
  45. package/lib/packlets/collections/aggregatedResultMap.js +728 -0
  46. package/lib/packlets/collections/collector.d.ts +11 -10
  47. package/lib/packlets/collections/collector.js +9 -9
  48. package/lib/packlets/collections/collectorValidator.d.ts +12 -10
  49. package/lib/packlets/collections/collectorValidator.js +4 -4
  50. package/lib/packlets/collections/converters.d.ts +18 -0
  51. package/lib/packlets/collections/converters.js +42 -0
  52. package/lib/packlets/collections/convertingCollector.d.ts +4 -4
  53. package/lib/packlets/collections/convertingCollectorValidator.d.ts +10 -7
  54. package/lib/packlets/collections/convertingCollectorValidator.js +3 -3
  55. package/lib/packlets/collections/convertingResultMap.d.ts +176 -0
  56. package/lib/packlets/collections/convertingResultMap.js +213 -0
  57. package/lib/packlets/collections/index.d.ts +4 -0
  58. package/lib/packlets/collections/index.js +4 -0
  59. package/lib/packlets/collections/keyValueConverters.d.ts +1 -4
  60. package/lib/packlets/collections/keyValueConverters.js +1 -4
  61. package/lib/packlets/collections/readOnlyConvertingResultMap.d.ts +153 -0
  62. package/lib/packlets/collections/readOnlyConvertingResultMap.js +197 -0
  63. package/lib/packlets/collections/readonlyResultMap.d.ts +7 -7
  64. package/lib/packlets/collections/resultMap.d.ts +108 -2
  65. package/lib/packlets/collections/resultMapValidator.d.ts +45 -11
  66. package/lib/packlets/collections/resultMapValidator.js +52 -7
  67. package/lib/packlets/collections/validatingCollector.d.ts +5 -5
  68. package/lib/packlets/collections/validatingConvertingCollector.d.ts +3 -3
  69. package/lib/packlets/collections/validatingConvertingResultMap.d.ts +102 -0
  70. package/lib/packlets/collections/validatingConvertingResultMap.js +83 -0
  71. package/lib/packlets/collections/validatingResultMap.d.ts +1 -1
  72. package/lib/packlets/conversion/advancedConverters.d.ts +170 -0
  73. package/lib/packlets/conversion/advancedConverters.js +258 -0
  74. package/lib/packlets/conversion/baseConverter.d.ts +39 -23
  75. package/lib/packlets/conversion/baseConverter.js +23 -16
  76. package/lib/packlets/conversion/basicConverters.d.ts +470 -0
  77. package/lib/packlets/conversion/basicConverters.js +595 -0
  78. package/lib/packlets/conversion/converter.d.ts +7 -0
  79. package/lib/packlets/conversion/converters.d.ts +2 -535
  80. package/lib/packlets/conversion/converters.js +17 -639
  81. package/lib/packlets/conversion/defaultingConverter.d.ts +20 -16
  82. package/lib/packlets/conversion/defaultingConverter.js +21 -15
  83. package/lib/packlets/logging/bootLogger.d.ts +84 -0
  84. package/lib/packlets/logging/bootLogger.js +126 -0
  85. package/lib/packlets/logging/index.d.ts +1 -0
  86. package/lib/packlets/logging/index.js +1 -0
  87. package/lib/packlets/logging/logReporter.d.ts +18 -3
  88. package/lib/packlets/logging/logReporter.js +31 -0
  89. package/lib/packlets/logging/logger.d.ts +39 -6
  90. package/lib/packlets/logging/logger.js +26 -5
  91. package/lib/packlets/validation/classes.d.ts +1 -0
  92. package/lib/packlets/validation/classes.js +3 -1
  93. package/lib/packlets/validation/compositeId.d.ts +29 -0
  94. package/lib/packlets/validation/compositeId.js +64 -0
  95. package/lib/packlets/validation/field.d.ts +1 -1
  96. package/lib/packlets/validation/field.js +1 -1
  97. package/lib/packlets/validation/genericValidator.d.ts +15 -11
  98. package/lib/packlets/validation/genericValidator.js +24 -10
  99. package/lib/packlets/validation/object.d.ts +3 -6
  100. package/lib/packlets/validation/object.js +3 -6
  101. package/lib/packlets/validation/traits.d.ts +3 -3
  102. package/lib/packlets/validation/validator.d.ts +7 -0
  103. package/lib/packlets/validation/validators.d.ts +10 -0
  104. package/lib/packlets/validation/validators.js +13 -0
  105. package/package.json +14 -14
@@ -64,6 +64,53 @@ export function omit(from, exclude) {
64
64
  }
65
65
  return rtrn;
66
66
  }
67
+ /**
68
+ * Type-safe(ish) key extractor for typed records.
69
+ * @param obj - The record from which keys are to be extracted.
70
+ * @returns The keys of the record as an array.
71
+ * @public
72
+ */
73
+ export function keysForRecord(obj) {
74
+ return Object.keys(obj);
75
+ }
76
+ /**
77
+ * Type-safe(ish) value extractor for typed records.
78
+ * @param obj - The record from which values are to be extracted.
79
+ * @returns The values of the record as an array.
80
+ * @public
81
+ */
82
+ export function valuesForRecord(obj) {
83
+ return Object.values(obj);
84
+ }
85
+ /**
86
+ * Type-safe(ish) entries extractor for typed records.
87
+ * @param obj - The record from which entries are to be extracted.
88
+ * @returns The entries of the record as an array of `[key, value]` tuples.
89
+ * @public
90
+ */
91
+ export function entriesForRecord(obj) {
92
+ return Object.entries(obj);
93
+ }
94
+ /**
95
+ * Type-safe(ish) record constructor from an iterable of `[key, value]` tuples.
96
+ * @param entries - The iterable of `[key, value]` tuples from which to construct the record.
97
+ * @returns A record constructed from the supplied entries.
98
+ * @public
99
+ */
100
+ export function recordFromEntries(entries) {
101
+ return Object.fromEntries(entries);
102
+ }
103
+ /**
104
+ * Ensures the input is an array. If already an array, returns it as-is.
105
+ * If a single item, wraps it in an array.
106
+ * Preserves readonly status of input arrays.
107
+ * @param items - A single item or an array of items.
108
+ * @returns The input array unchanged, or a new array containing the single item.
109
+ * @public
110
+ */
111
+ export function ensureArray(items) {
112
+ return (Array.isArray(items) ? items : [items]);
113
+ }
67
114
  /**
68
115
  * Gets the value of a property specified by key from an arbitrary object,
69
116
  * or a default value if the property does not exist.