@augment-vir/common 29.3.0 → 30.0.1

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 (296) hide show
  1. package/LICENSE-CC0 +121 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +7 -3
  4. package/dist/augments/array/array-map.d.ts +34 -0
  5. package/dist/augments/array/array-map.js +32 -0
  6. package/dist/augments/array/array-to-object.d.ts +53 -0
  7. package/dist/augments/array/array-to-object.js +67 -0
  8. package/dist/augments/array/awaited/awaited-filter.d.ts +36 -0
  9. package/dist/augments/array/awaited/awaited-filter.js +36 -0
  10. package/dist/augments/array/awaited/awaited-for-each.d.ts +31 -0
  11. package/dist/augments/array/awaited/awaited-for-each.js +34 -0
  12. package/dist/augments/array/awaited/awaited-map.d.ts +33 -0
  13. package/dist/augments/array/awaited/awaited-map.js +40 -0
  14. package/dist/augments/array/filter.d.ts +32 -0
  15. package/dist/augments/array/filter.js +74 -0
  16. package/dist/augments/array/remove-duplicates.d.ts +60 -0
  17. package/dist/augments/array/remove-duplicates.js +72 -0
  18. package/dist/augments/array/repeat-array.d.ts +23 -0
  19. package/dist/augments/array/repeat-array.js +25 -0
  20. package/dist/augments/array/shuffle-array.d.ts +9 -0
  21. package/dist/augments/array/shuffle-array.js +17 -0
  22. package/dist/augments/array/string-array.d.ts +9 -0
  23. package/dist/augments/array/string-array.js +11 -0
  24. package/dist/augments/core-exports.d.ts +1 -0
  25. package/dist/augments/core-exports.js +1 -0
  26. package/dist/augments/enum/enum-value-check.d.ts +32 -0
  27. package/dist/augments/enum/enum-value-check.js +34 -0
  28. package/dist/augments/error/combine-errors.d.ts +24 -0
  29. package/dist/augments/error/combine-errors.js +34 -0
  30. package/dist/augments/function/call-asynchronously.d.ts +25 -0
  31. package/dist/augments/function/call-asynchronously.js +26 -0
  32. package/dist/augments/function/call-with-retries.d.ts +24 -0
  33. package/dist/augments/function/call-with-retries.js +50 -0
  34. package/dist/augments/function/debounce.d.ts +89 -0
  35. package/dist/augments/function/debounce.js +112 -0
  36. package/dist/augments/function/execution-duration.d.ts +20 -0
  37. package/dist/augments/function/execution-duration.js +39 -0
  38. package/dist/augments/function/if-truthy.d.ts +28 -0
  39. package/dist/augments/function/if-truthy.js +35 -0
  40. package/dist/{types/augments → augments/function}/wrap-in-try.d.ts +14 -7
  41. package/dist/augments/function/wrap-in-try.js +98 -0
  42. package/dist/augments/json/append-json.d.ts +5 -0
  43. package/dist/augments/json/append-json.js +59 -0
  44. package/dist/augments/json/copy-through-json.d.ts +34 -0
  45. package/dist/augments/json/copy-through-json.js +42 -0
  46. package/dist/augments/json/json-compatible.d.ts +50 -0
  47. package/dist/augments/json/jsonify.d.ts +31 -0
  48. package/dist/augments/json/jsonify.js +33 -0
  49. package/dist/augments/log/log-colors.d.ts +64 -0
  50. package/dist/augments/log/log-colors.js +157 -0
  51. package/dist/augments/log/log-string.d.ts +35 -0
  52. package/dist/augments/log/log-string.js +73 -0
  53. package/dist/augments/log/log-writer.d.ts +30 -0
  54. package/dist/augments/log/log.d.ts +56 -0
  55. package/dist/augments/log/log.js +85 -0
  56. package/dist/augments/log/logger.d.ts +60 -0
  57. package/dist/augments/log/logger.js +59 -0
  58. package/dist/augments/number/clamp.d.ts +18 -0
  59. package/dist/augments/number/clamp.js +19 -0
  60. package/dist/augments/number/coords.d.ts +23 -0
  61. package/dist/augments/number/digit.d.ts +8 -0
  62. package/dist/augments/number/dimensions.d.ts +23 -0
  63. package/dist/augments/number/min-max.d.ts +18 -0
  64. package/dist/augments/number/min-max.js +16 -0
  65. package/dist/augments/number/number-conversion.d.ts +29 -0
  66. package/dist/augments/number/number-conversion.js +56 -0
  67. package/dist/augments/number/round.d.ts +22 -0
  68. package/dist/augments/number/round.js +24 -0
  69. package/dist/augments/number/scientific.d.ts +18 -0
  70. package/dist/augments/number/scientific.js +20 -0
  71. package/dist/augments/number/truncate-number.d.ts +40 -0
  72. package/dist/{esm/augments → augments/number}/truncate-number.js +39 -17
  73. package/dist/augments/number/wrap-number.d.ts +19 -0
  74. package/dist/augments/number/wrap-number.js +28 -0
  75. package/dist/augments/object/diff.d.ts +51 -0
  76. package/dist/augments/object/diff.js +149 -0
  77. package/dist/augments/object/empty.d.ts +9 -0
  78. package/dist/augments/object/get-or-set.d.ts +10 -0
  79. package/dist/augments/object/get-or-set.js +100 -0
  80. package/dist/augments/object/key-count.d.ts +21 -0
  81. package/dist/augments/object/map-entries.d.ts +13 -0
  82. package/dist/augments/object/map-entries.js +80 -0
  83. package/dist/augments/object/map-enum.d.ts +11 -0
  84. package/dist/augments/object/map-enum.js +45 -0
  85. package/dist/augments/object/map-values.d.ts +35 -0
  86. package/dist/augments/object/map-values.js +65 -0
  87. package/dist/{types/augments → augments}/object/merge-deep.d.ts +4 -0
  88. package/dist/{esm/augments → augments}/object/merge-deep.js +9 -6
  89. package/dist/augments/object/merge-defined-properties.d.ts +19 -0
  90. package/dist/augments/object/merge-defined-properties.js +32 -0
  91. package/dist/augments/object/merge-property-arrays.d.ts +29 -0
  92. package/dist/augments/object/merge-property-arrays.js +39 -0
  93. package/dist/augments/object/object-entries.d.ts +31 -0
  94. package/dist/augments/object/object-entries.js +40 -0
  95. package/dist/augments/object/object-filter.d.ts +22 -0
  96. package/dist/augments/object/object-filter.js +27 -0
  97. package/dist/augments/object/object-keys.d.ts +34 -0
  98. package/dist/augments/object/object-keys.js +43 -0
  99. package/dist/augments/object/object-values.d.ts +11 -0
  100. package/dist/augments/object/object-values.js +13 -0
  101. package/dist/augments/path/esm-path.d.ts +26 -0
  102. package/dist/augments/path/esm-path.js +31 -0
  103. package/dist/augments/prisma/prisma-models.d.ts +143 -0
  104. package/dist/augments/prisma/prisma-models.js +1 -0
  105. package/dist/augments/promise/timed-promise.d.ts +22 -0
  106. package/dist/augments/promise/timed-promise.js +51 -0
  107. package/dist/augments/random/random-boolean.d.ts +24 -0
  108. package/dist/augments/random/random-boolean.js +32 -0
  109. package/dist/augments/random/random-integer.d.ts +14 -0
  110. package/dist/augments/random/random-integer.js +34 -0
  111. package/dist/augments/random/random-string.d.ts +18 -0
  112. package/dist/augments/random/random-string.js +67 -0
  113. package/dist/augments/regexp/match.d.ts +10 -0
  114. package/dist/augments/regexp/match.js +13 -0
  115. package/dist/augments/regexp/regexp-flags.d.ts +56 -0
  116. package/dist/augments/regexp/regexp-flags.js +75 -0
  117. package/dist/augments/regexp/regexp-string.d.ts +9 -0
  118. package/dist/augments/regexp/regexp-string.js +11 -0
  119. package/dist/augments/selection-set/select-collapsed.d.ts +54 -0
  120. package/dist/augments/selection-set/select-collapsed.js +63 -0
  121. package/dist/augments/selection-set/select-from.d.ts +48 -0
  122. package/dist/augments/selection-set/select-from.js +72 -0
  123. package/dist/augments/selection-set/selection-set.d.ts +37 -0
  124. package/dist/augments/selection-set/selection-set.js +1 -0
  125. package/dist/augments/string/casing/capitalization.d.ts +17 -0
  126. package/dist/augments/string/casing/capitalization.js +25 -0
  127. package/dist/augments/string/casing/casing.d.ts +73 -0
  128. package/dist/augments/string/casing/casing.js +65 -0
  129. package/dist/augments/string/casing/kebab-and-camel.d.ts +17 -0
  130. package/dist/augments/string/casing/kebab-and-camel.js +57 -0
  131. package/dist/augments/string/comma.d.ts +26 -0
  132. package/dist/augments/string/comma.js +48 -0
  133. package/dist/augments/string/join.d.ts +21 -0
  134. package/dist/augments/string/join.js +34 -0
  135. package/dist/augments/string/prefix.d.ts +30 -0
  136. package/dist/augments/string/prefix.js +30 -0
  137. package/dist/augments/string/remove-duplicate-characters.d.ts +17 -0
  138. package/dist/augments/string/remove-duplicate-characters.js +22 -0
  139. package/dist/augments/string/replace.d.ts +18 -0
  140. package/dist/augments/string/replace.js +22 -0
  141. package/dist/augments/string/split.d.ts +31 -0
  142. package/dist/augments/string/split.js +53 -0
  143. package/dist/augments/string/substring-index.d.ts +19 -0
  144. package/dist/augments/string/substring-index.js +47 -0
  145. package/dist/augments/string/suffix.d.ts +96 -0
  146. package/dist/augments/string/suffix.js +89 -0
  147. package/dist/augments/string/white-space.d.ts +12 -0
  148. package/dist/augments/string/white-space.js +19 -0
  149. package/dist/augments/string/wrap-string.d.ts +19 -0
  150. package/dist/augments/string/wrap-string.js +20 -0
  151. package/dist/augments/type/ensure-type.d.ts +12 -0
  152. package/dist/augments/type/ensure-type.js +14 -0
  153. package/dist/augments/type/readonly.d.ts +9 -0
  154. package/dist/augments/type/readonly.js +10 -0
  155. package/dist/augments/type/type-recursion.d.ts +253 -0
  156. package/dist/augments/type/type-recursion.js +1 -0
  157. package/dist/augments/type/union.d.ts +1 -0
  158. package/dist/augments/type/union.js +1 -0
  159. package/dist/augments/type/void-type.d.ts +9 -0
  160. package/dist/augments/type/void-type.js +1 -0
  161. package/dist/augments/type/writable.d.ts +10 -0
  162. package/dist/augments/type/writable.js +10 -0
  163. package/dist/index.d.ts +83 -0
  164. package/dist/index.js +83 -0
  165. package/package.json +43 -15
  166. package/dist/cjs/augments/ansi.js +0 -27
  167. package/dist/cjs/augments/array/array.js +0 -68
  168. package/dist/cjs/augments/array/remove-duplicates.js +0 -16
  169. package/dist/cjs/augments/async.js +0 -28
  170. package/dist/cjs/augments/boolean.js +0 -19
  171. package/dist/cjs/augments/common-number.js +0 -112
  172. package/dist/cjs/augments/common-string.js +0 -245
  173. package/dist/cjs/augments/debounce.js +0 -38
  174. package/dist/cjs/augments/environment.js +0 -6
  175. package/dist/cjs/augments/error.js +0 -52
  176. package/dist/cjs/augments/esm-path.js +0 -11
  177. package/dist/cjs/augments/function.js +0 -2
  178. package/dist/cjs/augments/json-compatible.js +0 -2
  179. package/dist/cjs/augments/json.js +0 -28
  180. package/dist/cjs/augments/object/any-object.js +0 -2
  181. package/dist/cjs/augments/object/enum.js +0 -48
  182. package/dist/cjs/augments/object/filter-object.js +0 -26
  183. package/dist/cjs/augments/object/get-or-set.js +0 -40
  184. package/dist/cjs/augments/object/has-key.js +0 -6
  185. package/dist/cjs/augments/object/jsonify.js +0 -6
  186. package/dist/cjs/augments/object/key-count.js +0 -2
  187. package/dist/cjs/augments/object/map-object.js +0 -61
  188. package/dist/cjs/augments/object/merge-deep.js +0 -52
  189. package/dist/cjs/augments/object/merge-property-arrays.js +0 -14
  190. package/dist/cjs/augments/object/object-entries.js +0 -40
  191. package/dist/cjs/augments/object/object.js +0 -18
  192. package/dist/cjs/augments/object/pick-deep.js +0 -2
  193. package/dist/cjs/augments/object/selection-set.js +0 -56
  194. package/dist/cjs/augments/object/typed-has-property.js +0 -29
  195. package/dist/cjs/augments/promise/deferred-promise.js +0 -31
  196. package/dist/cjs/augments/promise/promise.js +0 -79
  197. package/dist/cjs/augments/promise/wait.js +0 -66
  198. package/dist/cjs/augments/random.js +0 -118
  199. package/dist/cjs/augments/regexp.js +0 -19
  200. package/dist/cjs/augments/string/prefixes.js +0 -20
  201. package/dist/cjs/augments/string/suffixes.js +0 -40
  202. package/dist/cjs/augments/string/uuid.js +0 -13
  203. package/dist/cjs/augments/time.js +0 -35
  204. package/dist/cjs/augments/truncate-number.js +0 -153
  205. package/dist/cjs/augments/tuple.js +0 -20
  206. package/dist/cjs/augments/type-recursion.js +0 -2
  207. package/dist/cjs/augments/type.js +0 -36
  208. package/dist/cjs/augments/union.js +0 -2
  209. package/dist/cjs/augments/wrap-in-try.js +0 -37
  210. package/dist/cjs/index.js +0 -60
  211. package/dist/esm/augments/ansi.js +0 -24
  212. package/dist/esm/augments/array/array.js +0 -57
  213. package/dist/esm/augments/array/remove-duplicates.js +0 -13
  214. package/dist/esm/augments/async.js +0 -23
  215. package/dist/esm/augments/boolean.js +0 -14
  216. package/dist/esm/augments/common-number.js +0 -100
  217. package/dist/esm/augments/common-string.js +0 -227
  218. package/dist/esm/augments/debounce.js +0 -34
  219. package/dist/esm/augments/environment.js +0 -3
  220. package/dist/esm/augments/error.js +0 -45
  221. package/dist/esm/augments/esm-path.js +0 -8
  222. package/dist/esm/augments/json.js +0 -24
  223. package/dist/esm/augments/object/enum.js +0 -41
  224. package/dist/esm/augments/object/filter-object.js +0 -21
  225. package/dist/esm/augments/object/get-or-set.js +0 -36
  226. package/dist/esm/augments/object/has-key.js +0 -3
  227. package/dist/esm/augments/object/jsonify.js +0 -3
  228. package/dist/esm/augments/object/map-object.js +0 -57
  229. package/dist/esm/augments/object/merge-property-arrays.js +0 -11
  230. package/dist/esm/augments/object/object-entries.js +0 -32
  231. package/dist/esm/augments/object/object.js +0 -14
  232. package/dist/esm/augments/object/selection-set.js +0 -52
  233. package/dist/esm/augments/object/typed-has-property.js +0 -25
  234. package/dist/esm/augments/promise/deferred-promise.js +0 -28
  235. package/dist/esm/augments/promise/promise.js +0 -71
  236. package/dist/esm/augments/promise/wait.js +0 -60
  237. package/dist/esm/augments/random.js +0 -113
  238. package/dist/esm/augments/regexp.js +0 -14
  239. package/dist/esm/augments/string/prefixes.js +0 -16
  240. package/dist/esm/augments/string/suffixes.js +0 -31
  241. package/dist/esm/augments/string/uuid.js +0 -9
  242. package/dist/esm/augments/time.js +0 -31
  243. package/dist/esm/augments/tuple.js +0 -16
  244. package/dist/esm/augments/type.js +0 -30
  245. package/dist/esm/augments/wrap-in-try.js +0 -34
  246. package/dist/esm/index.js +0 -44
  247. package/dist/types/augments/ansi.d.ts +0 -1
  248. package/dist/types/augments/array/array.d.ts +0 -26
  249. package/dist/types/augments/array/remove-duplicates.d.ts +0 -1
  250. package/dist/types/augments/async.d.ts +0 -14
  251. package/dist/types/augments/boolean.d.ts +0 -6
  252. package/dist/types/augments/common-number.d.ts +0 -52
  253. package/dist/types/augments/common-string.d.ts +0 -74
  254. package/dist/types/augments/debounce.d.ts +0 -15
  255. package/dist/types/augments/environment.d.ts +0 -1
  256. package/dist/types/augments/error.d.ts +0 -9
  257. package/dist/types/augments/esm-path.d.ts +0 -4
  258. package/dist/types/augments/function.d.ts +0 -25
  259. package/dist/types/augments/json-compatible.d.ts +0 -22
  260. package/dist/types/augments/json.d.ts +0 -9
  261. package/dist/types/augments/object/any-object.d.ts +0 -2
  262. package/dist/types/augments/object/enum.d.ts +0 -8
  263. package/dist/types/augments/object/filter-object.d.ts +0 -4
  264. package/dist/types/augments/object/get-or-set.d.ts +0 -26
  265. package/dist/types/augments/object/has-key.d.ts +0 -1
  266. package/dist/types/augments/object/jsonify.d.ts +0 -2
  267. package/dist/types/augments/object/key-count.d.ts +0 -13
  268. package/dist/types/augments/object/map-object.d.ts +0 -20
  269. package/dist/types/augments/object/merge-property-arrays.d.ts +0 -1
  270. package/dist/types/augments/object/object-entries.d.ts +0 -8
  271. package/dist/types/augments/object/object.d.ts +0 -21
  272. package/dist/types/augments/object/pick-deep.d.ts +0 -14
  273. package/dist/types/augments/object/selection-set.d.ts +0 -27
  274. package/dist/types/augments/object/typed-has-property.d.ts +0 -7
  275. package/dist/types/augments/promise/deferred-promise.d.ts +0 -8
  276. package/dist/types/augments/promise/promise.d.ts +0 -15
  277. package/dist/types/augments/promise/wait.d.ts +0 -18
  278. package/dist/types/augments/random.d.ts +0 -37
  279. package/dist/types/augments/regexp.d.ts +0 -3
  280. package/dist/types/augments/string/prefixes.d.ts +0 -9
  281. package/dist/types/augments/string/suffixes.d.ts +0 -17
  282. package/dist/types/augments/string/uuid.d.ts +0 -5
  283. package/dist/types/augments/time.d.ts +0 -14
  284. package/dist/types/augments/truncate-number.d.ts +0 -19
  285. package/dist/types/augments/tuple.d.ts +0 -17
  286. package/dist/types/augments/type-recursion.d.ts +0 -161
  287. package/dist/types/augments/type.d.ts +0 -69
  288. package/dist/types/augments/union.d.ts +0 -5
  289. package/dist/types/index.d.ts +0 -44
  290. /package/dist/{esm/augments → augments/json}/json-compatible.js +0 -0
  291. /package/dist/{esm/augments/function.js → augments/log/log-writer.js} +0 -0
  292. /package/dist/{esm/augments/object/any-object.js → augments/number/coords.js} +0 -0
  293. /package/dist/{esm/augments/object/key-count.js → augments/number/digit.js} +0 -0
  294. /package/dist/{esm/augments/object/pick-deep.js → augments/number/dimensions.js} +0 -0
  295. /package/dist/{esm/augments/type-recursion.js → augments/object/empty.js} +0 -0
  296. /package/dist/{esm/augments/union.js → augments/object/key-count.js} +0 -0
@@ -1,153 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.truncateNumber = truncateNumber;
4
- const common_number_1 = require("./common-number");
5
- const common_string_1 = require("./common-string");
6
- const regexp_1 = require("./regexp");
7
- const defaultTruncationSuffixes = [
8
- 'k', // thousand
9
- 'M', // million
10
- 'B', // billion
11
- 'T', // trillion
12
- 'P', // peta-, quadrillion
13
- 'E', // exa- quintillion
14
- 'Z', // zetta- sextillion
15
- 'Y', // yotta- septillion
16
- ];
17
- function combineBeforeAndAfterDot({ beforeDot, afterDot = '', maxLength, }) {
18
- if (afterDot.length) {
19
- const allowedAfterDotLength = maxLength -
20
- beforeDot.length -
21
- // 1 for the period
22
- 1;
23
- if (allowedAfterDotLength > 0) {
24
- const slicedAfterDot = afterDot.slice(0, allowedAfterDotLength);
25
- // if slicedAfterDot is just a bunch of 0
26
- if (!Number(slicedAfterDot)) {
27
- return beforeDot;
28
- }
29
- return [
30
- beforeDot,
31
- slicedAfterDot,
32
- ].join('.');
33
- }
34
- }
35
- return beforeDot;
36
- }
37
- function truncateBigNumber(numberAsString, suffixes, maxLength) {
38
- const [beforeDot, afterDot,] = (0, common_string_1.typedSplit)(numberAsString, '.');
39
- const withCommas = (0, common_number_1.addCommasToNumber)(beforeDot);
40
- const truncationDepth = (0, regexp_1.safeMatch)(withCommas, /,/g).length;
41
- const suffix = suffixes[truncationDepth - 1];
42
- const [beforeComma, afterComma,] = (0, common_string_1.typedSplit)(withCommas, ',');
43
- const trailing = [
44
- afterComma,
45
- afterDot,
46
- ].join('');
47
- if (beforeComma.length + 1 > maxLength) {
48
- // will look like 0.9M
49
- const minimumString = [
50
- '0.',
51
- beforeComma[0],
52
- suffixes[truncationDepth],
53
- ].join('');
54
- return minimumString;
55
- }
56
- else {
57
- const combined = combineBeforeAndAfterDot({
58
- beforeDot: beforeComma,
59
- afterDot: trailing,
60
- maxLength: maxLength - 1 /* -1 to account for the suffix*/,
61
- });
62
- return [
63
- combined,
64
- suffix,
65
- ].join('');
66
- }
67
- }
68
- const minScientificNotationLength = '1e+'.length;
69
- function truncateScientificNotation({ input, maxLength, }) {
70
- const valueString = String(input);
71
- const [beforeExponent, rawExponent,] = (0, common_string_1.typedSplit)(valueString, 'e');
72
- const exponent = rawExponent.replace(/^[\-\+]/, '');
73
- const plusOrMinus = rawExponent[0];
74
- const eSuffix = [
75
- 'e',
76
- plusOrMinus,
77
- exponent,
78
- ].join('');
79
- const [beforeDot, afterDot,] = (0, common_string_1.typedSplit)(beforeExponent, '.');
80
- const minLength = exponent.length + minScientificNotationLength;
81
- if (minLength === maxLength) {
82
- // this will look like "4e+4" or "5e-234"
83
- return [
84
- beforeDot,
85
- eSuffix,
86
- ].join('');
87
- }
88
- else if (minLength > maxLength) {
89
- // in this case the number is either way too big or way to small for its exponent to fit within the max length so we just jump to 0 or Infinity
90
- if (plusOrMinus === '-') {
91
- return '0';
92
- }
93
- else {
94
- return String(Infinity);
95
- }
96
- }
97
- else {
98
- // in this case we have room to add some decimal values to the number
99
- const beforeE = combineBeforeAndAfterDot({
100
- afterDot,
101
- beforeDot,
102
- maxLength: maxLength - exponent.length + minScientificNotationLength,
103
- });
104
- return [
105
- beforeE,
106
- eSuffix,
107
- ].join('');
108
- }
109
- }
110
- function handleSmallNumbers(numberAsString, maxLength) {
111
- const [beforeDot, afterDot,] = (0, common_string_1.typedSplit)((0, common_number_1.addCommasToNumber)(numberAsString), '.');
112
- if (beforeDot.length <= maxLength) {
113
- return combineBeforeAndAfterDot({
114
- beforeDot,
115
- afterDot,
116
- maxLength,
117
- });
118
- }
119
- // in this case, the number is not small enough to be handled by this function
120
- return undefined;
121
- }
122
- /**
123
- * This truncates a number such that is will at a max have 6 characters including suffix, decimal
124
- * point, or comma.
125
- *
126
- * Default suffixes are:
127
- *
128
- * 'k', // thousand
129
- * 'M', // million
130
- * 'B', // billion
131
- * 'T', // trillion
132
- * 'P', // peta-, quadrillion
133
- * 'E', // exa- quintillion
134
- * 'Z', // zetta- sextillion
135
- * 'Y', // yotta- septillion
136
- */
137
- function truncateNumber(originalValue, { customSuffixes = defaultTruncationSuffixes, maxLength = 6, } = {}) {
138
- const inputNumber = (0, common_number_1.convertIntoNumber)(originalValue);
139
- // handle edge cases
140
- if (isNaN(inputNumber) || inputNumber === Infinity) {
141
- return String(inputNumber);
142
- }
143
- // handle too big or too small edge cases
144
- if ((0, common_number_1.doesRequireScientificNotation)(inputNumber)) {
145
- return truncateScientificNotation({ input: inputNumber, maxLength });
146
- }
147
- const numberAsString = String(inputNumber);
148
- const smallResult = handleSmallNumbers(numberAsString, maxLength);
149
- if (smallResult != undefined) {
150
- return smallResult;
151
- }
152
- return truncateBigNumber(numberAsString, customSuffixes, maxLength);
153
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isLengthAtLeast = isLengthAtLeast;
4
- exports.assertLengthAtLeast = assertLengthAtLeast;
5
- function isLengthAtLeast(array, length) {
6
- try {
7
- assertLengthAtLeast(array, length);
8
- return true;
9
- }
10
- catch (error) {
11
- return false;
12
- }
13
- }
14
- function assertLengthAtLeast(array, length, arrayName) {
15
- if (array.length < length) {
16
- throw new Error(arrayName
17
- ? `'${arrayName}' is not at least '${length}' in length.`
18
- : `Array is not at least '${length}' in length.`);
19
- }
20
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeWritable = makeWritable;
4
- exports.makeReadonly = makeReadonly;
5
- exports.wrapNarrowTypeWithTypeCheck = wrapNarrowTypeWithTypeCheck;
6
- exports.ensureType = ensureType;
7
- function makeWritable(input) {
8
- return input;
9
- }
10
- function makeReadonly(input) {
11
- return input;
12
- }
13
- /**
14
- * This function returns another function that simply returns whatever input it's given. However, it
15
- * also checks that the input matches the original wrapNarrowTypeWithTypeCheck's generic, while
16
- * maintaining strict "const" like typing.
17
- *
18
- * Use like this: wrapNarrowTypeWithTypeCheck<EnforcedTypeHere>()(valueToEnforceTypeOn as const)
19
- *
20
- * Sometimes "as const" isn't required, usually it is for any object or array though.
21
- */
22
- function wrapNarrowTypeWithTypeCheck() {
23
- return (input) => {
24
- return input;
25
- };
26
- }
27
- /**
28
- * This is a type helper that ensures the given input matches the given generic type. The generic is
29
- * setup in such a way that if it is omitted (which is typically allowed in TypeScript, resulting in
30
- * the generic being inferred from the inputs), there will actually be a type error. This forces
31
- * each usage of this function to explicitly specify the generic, thus giving us type safety for the
32
- * input.
33
- */
34
- function ensureType(input) {
35
- return input;
36
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrapInTry = wrapInTry;
4
- const run_time_assertions_1 = require("run-time-assertions");
5
- const error_1 = require("./error");
6
- function wrapInTry(callback, options = {}) {
7
- try {
8
- const value = callback();
9
- if (value instanceof Promise) {
10
- return value.catch((error) => {
11
- if (options.handleError) {
12
- return options.handleError(error);
13
- }
14
- else if ((0, run_time_assertions_1.hasProperty)(options, 'fallbackValue')) {
15
- return options.fallbackValue;
16
- }
17
- else {
18
- return (0, error_1.ensureError)(error);
19
- }
20
- });
21
- }
22
- else {
23
- return value;
24
- }
25
- }
26
- catch (error) {
27
- if (options.handleError) {
28
- return options.handleError(error);
29
- }
30
- else if ((0, run_time_assertions_1.hasProperty)(options, 'fallbackValue')) {
31
- return options.fallbackValue;
32
- }
33
- else {
34
- return (0, error_1.ensureError)(error);
35
- }
36
- }
37
- }
package/dist/cjs/index.js DELETED
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./augments/ansi"), exports);
18
- __exportStar(require("./augments/array/array"), exports);
19
- __exportStar(require("./augments/array/remove-duplicates"), exports);
20
- __exportStar(require("./augments/async"), exports);
21
- __exportStar(require("./augments/boolean"), exports);
22
- __exportStar(require("./augments/common-number"), exports);
23
- __exportStar(require("./augments/common-string"), exports);
24
- __exportStar(require("./augments/debounce"), exports);
25
- __exportStar(require("./augments/environment"), exports);
26
- __exportStar(require("./augments/error"), exports);
27
- __exportStar(require("./augments/esm-path"), exports);
28
- __exportStar(require("./augments/function"), exports);
29
- __exportStar(require("./augments/json"), exports);
30
- __exportStar(require("./augments/json-compatible"), exports);
31
- __exportStar(require("./augments/object/any-object"), exports);
32
- __exportStar(require("./augments/object/enum"), exports);
33
- __exportStar(require("./augments/object/filter-object"), exports);
34
- __exportStar(require("./augments/object/get-or-set"), exports);
35
- __exportStar(require("./augments/object/has-key"), exports);
36
- __exportStar(require("./augments/object/jsonify"), exports);
37
- __exportStar(require("./augments/object/key-count"), exports);
38
- __exportStar(require("./augments/object/map-object"), exports);
39
- __exportStar(require("./augments/object/merge-deep"), exports);
40
- __exportStar(require("./augments/object/merge-property-arrays"), exports);
41
- __exportStar(require("./augments/object/object"), exports);
42
- __exportStar(require("./augments/object/object-entries"), exports);
43
- __exportStar(require("./augments/object/pick-deep"), exports);
44
- __exportStar(require("./augments/object/selection-set"), exports);
45
- __exportStar(require("./augments/object/typed-has-property"), exports);
46
- __exportStar(require("./augments/promise/deferred-promise"), exports);
47
- __exportStar(require("./augments/promise/promise"), exports);
48
- __exportStar(require("./augments/promise/wait"), exports);
49
- __exportStar(require("./augments/random"), exports);
50
- __exportStar(require("./augments/regexp"), exports);
51
- __exportStar(require("./augments/string/prefixes"), exports);
52
- __exportStar(require("./augments/string/suffixes"), exports);
53
- __exportStar(require("./augments/string/uuid"), exports);
54
- __exportStar(require("./augments/time"), exports);
55
- __exportStar(require("./augments/truncate-number"), exports);
56
- __exportStar(require("./augments/tuple"), exports);
57
- __exportStar(require("./augments/type"), exports);
58
- __exportStar(require("./augments/type-recursion"), exports);
59
- __exportStar(require("./augments/union"), exports);
60
- __exportStar(require("./augments/wrap-in-try"), exports);
@@ -1,24 +0,0 @@
1
- // cspell:disable
2
- /*
3
- Copied from
4
- https://github.com/chalk/ansi-regex/blob/1b337add136eb520764634a328e2f6354398eee5/index.js
5
- because the published ansi-regex package exports this in a manner that Jest can't handle and the
6
- latest version of the package that doesn't do that has a security vulnerability. The package has
7
- the following license from
8
- https://github.com/chalk/ansi-regex/blob/1b337add136eb520764634a328e2f6354398eee5/license
9
-
10
- MIT License
11
- Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
12
-
13
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
14
-
15
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
- */
19
- // cspell:enable
20
- const patterns = [
21
- '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
22
- '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))',
23
- ];
24
- export const ansiRegex = new RegExp(patterns.join('|'), 'g');
@@ -1,57 +0,0 @@
1
- import { getOrSet } from '../object/get-or-set';
2
- import { typedObjectFromEntries } from '../object/object-entries';
3
- export function filterOutIndexes(array, indexes) {
4
- return array.filter((_, index) => !indexes.includes(index));
5
- }
6
- export function flatten2dArray(array2d) {
7
- const flattened = array2d.reduce((accum, row) => accum.concat(row), []);
8
- return flattened;
9
- }
10
- export function trimArrayStrings(input) {
11
- return input.map((line) => line.trim()).filter((line) => line !== '');
12
- }
13
- export function typedArrayIncludes(array, input) {
14
- return array.includes(input);
15
- }
16
- /** Preserves tuple types. */
17
- export function typedMap(arrayToMap, mapCallback) {
18
- return arrayToMap.map(mapCallback);
19
- }
20
- export function repeatArray(repeatCount, array) {
21
- return Array.from({ length: repeatCount }, () => [...array]).flat();
22
- }
23
- /**
24
- * Polyfill for `Object.groupBy`:
25
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy
26
- */
27
- export function groupArrayBy(inputArray, callback) {
28
- return inputArray.reduce((accum, entry, index, originalArray) => {
29
- const key = callback(entry, index, originalArray);
30
- const entryArray = getOrSet(accum, key, () => []);
31
- entryArray.push(entry);
32
- return accum;
33
- }, {});
34
- }
35
- /**
36
- * Like `groupArrayBy` but maps array entries to a single key. Meaning, the resulting object does
37
- * not have an array of elements (unless the original array itself contains arrays).
38
- */
39
- export function arrayToObject(inputArray, callback) {
40
- return typedObjectFromEntries(inputArray.map((entry, index, originalArray) => {
41
- const key = callback(entry, index, originalArray);
42
- return [
43
- key,
44
- entry,
45
- ];
46
- }));
47
- }
48
- export function filterMap(inputArray, mapCallback, filterCallback) {
49
- return inputArray.reduce((accum, entry, index, originalArray) => {
50
- const mapOutput = mapCallback(entry, index, originalArray);
51
- const filterOutput = filterCallback(mapOutput, entry, index, originalArray);
52
- if (filterOutput) {
53
- accum.push(mapOutput);
54
- }
55
- return accum;
56
- }, []);
57
- }
@@ -1,13 +0,0 @@
1
- export function removeDuplicates(originalArray, calculateUniqueIdCallback) {
2
- const grouped = new Map();
3
- return originalArray.filter((entry) => {
4
- const uniqueId = calculateUniqueIdCallback(entry);
5
- if (grouped.get(uniqueId)) {
6
- return false;
7
- }
8
- else {
9
- grouped.set(uniqueId, entry);
10
- return true;
11
- }
12
- });
13
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Acts like calling Array.prototype.forEach in that all elements are executed upon in order, and
3
- * each execution is blocking. Meaning, the callback won't be called on element 2 until the callback
4
- * has finished its call on element 1.
5
- */
6
- export async function awaitedForEach(input, callback) {
7
- await awaitedBlockingMap(input, callback);
8
- }
9
- export async function awaitedBlockingMap(input, callback) {
10
- const mappedValues = await input.reduce(async (accumPromise, currentElement, index, wholeArray) => {
11
- const accum = await accumPromise;
12
- const mappedValue = await callback(currentElement, index, wholeArray);
13
- accum.push(mappedValue);
14
- return accum;
15
- }, Promise.resolve([]));
16
- return mappedValues;
17
- }
18
- export async function awaitedFilter(arrayInput, filterCallback, options) {
19
- const callbackResults = options?.blocking
20
- ? await awaitedBlockingMap(arrayInput, filterCallback)
21
- : await Promise.all(arrayInput.map(filterCallback));
22
- return arrayInput.filter((originalValue, index) => !!callbackResults[index]);
23
- }
@@ -1,14 +0,0 @@
1
- export function isTruthy(input) {
2
- return !!input;
3
- }
4
- export function isFalsy(input) {
5
- return !input;
6
- }
7
- export function ifTruthy(checkThis, ifTruthyCallback, ifFalsyCallback) {
8
- if (isTruthy(checkThis)) {
9
- return ifTruthyCallback(checkThis);
10
- }
11
- else {
12
- return ifFalsyCallback(checkThis);
13
- }
14
- }
@@ -1,100 +0,0 @@
1
- import { removeCommasFromNumberString } from './common-string';
2
- import { safeMatch } from './regexp';
3
- export const NaNString = String(NaN);
4
- export function addCommasToNumber(input) {
5
- if (typeof input === 'string' && isNaN(Number(input))) {
6
- return NaNString;
7
- }
8
- const numericValue = Number(input);
9
- const isNegative = numericValue < 0;
10
- const stringValue = String(Math.abs(numericValue));
11
- const [digits, decimalValues,] = stringValue.split('.');
12
- const decimalString = decimalValues ? `.${decimalValues}` : '';
13
- const separated = safeMatch(digits.split('').reverse().join(''), /.{1,3}/g)
14
- .reverse()
15
- .map((entry) => entry.split('').reverse().join(''));
16
- const valueWithCommas = separated.join(',');
17
- const negativeMarker = isNegative ? '-' : '';
18
- return [
19
- negativeMarker,
20
- valueWithCommas,
21
- decimalString,
22
- ].join('');
23
- }
24
- export function doesRequireScientificNotation(input) {
25
- return String(input).includes('e');
26
- }
27
- /**
28
- * Given a min and max, ensures that they are in correct order. Meaning, min is less than max. If
29
- * that is not the case, the returned value is the given min and max values swapped.
30
- */
31
- export function ensureMinAndMax({ min, max }) {
32
- if (min > max) {
33
- return { min: max, max: min };
34
- }
35
- else {
36
- return { min, max };
37
- }
38
- }
39
- /**
40
- * Tries to convert the input into a number. Handles strings with commas. Note: this might return
41
- * `NaN`.
42
- */
43
- export function toNumber(input) {
44
- if (typeof input === 'number') {
45
- return input;
46
- }
47
- else if (typeof input === 'string') {
48
- return Number(removeCommasFromNumberString(input));
49
- }
50
- else {
51
- return Number(input);
52
- }
53
- }
54
- /** @deprecated Use {@link toNumber} instead. */
55
- export const convertIntoNumber = toNumber;
56
- /** Tries to convert the input into a number and throws an error if `NaN` is created. */
57
- export function toEnsuredNumber(input) {
58
- const numeric = toMaybeNumber(input);
59
- if (numeric == undefined) {
60
- throw new Error(`Cannot convert to a number: ${input}`);
61
- }
62
- else {
63
- return numeric;
64
- }
65
- }
66
- /** Tries to convert the input into a number and returns `undefined` if `NaN` is created. */
67
- export function toMaybeNumber(input) {
68
- const numeric = toNumber(input);
69
- if (isNaN(numeric)) {
70
- return undefined;
71
- }
72
- else {
73
- return numeric;
74
- }
75
- }
76
- /**
77
- * If the given value is outside the given min/max bounds, instead of clamping the number (as the
78
- * `clamp` function does), this function wraps the value around to the next bound.
79
- *
80
- * @example
81
- * wrapNumber({min: 0, max: 100, value: 101}) == 0;
82
- */
83
- export function wrapNumber({ max, min, value }) {
84
- if (value > max) {
85
- return min;
86
- }
87
- else if (value < min) {
88
- return max;
89
- }
90
- return value;
91
- }
92
- export function round(inputs) {
93
- const digitFactor = Math.pow(10, inputs.digits);
94
- const multiplied = inputs.number * digitFactor;
95
- return Number((Math.round(multiplied) / digitFactor).toFixed(inputs.digits));
96
- }
97
- /** Clamp's the given value to within the min and max bounds, inclusive. */
98
- export function clamp({ value, min, max }) {
99
- return Math.min(Math.max(value, min), max);
100
- }