@ezez/utils 4.8.1 → 4.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/.claude/settings.local.json +8 -1
  2. package/CHANGELOG.md +14 -0
  3. package/dist/get.d.ts.map +1 -1
  4. package/dist/get.js +1 -1
  5. package/dist/get.js.map +1 -1
  6. package/dist/mostFrequent.d.ts +1 -1
  7. package/dist/mostFrequent.d.ts.map +1 -1
  8. package/dist/mostFrequent.js +2 -5
  9. package/dist/mostFrequent.js.map +1 -1
  10. package/dist/samples.d.ts.map +1 -1
  11. package/dist/samples.js +2 -1
  12. package/dist/samples.js.map +1 -1
  13. package/dist/scale.d.ts.map +1 -1
  14. package/dist/scale.js +3 -0
  15. package/dist/scale.js.map +1 -1
  16. package/dist/sortByMultiple.d.ts.map +1 -1
  17. package/dist/sortByMultiple.js.map +1 -1
  18. package/dist/throttle.d.ts +3 -3
  19. package/dist/throttle.d.ts.map +1 -1
  20. package/dist/throttle.js +2 -3
  21. package/dist/throttle.js.map +1 -1
  22. package/dist/trimEnd.d.ts.map +1 -1
  23. package/dist/trimEnd.js +3 -0
  24. package/dist/trimEnd.js.map +1 -1
  25. package/dist/trimStart.d.ts.map +1 -1
  26. package/dist/trimStart.js +3 -0
  27. package/dist/trimStart.js.map +1 -1
  28. package/dist/waitFor.d.ts.map +1 -1
  29. package/dist/waitFor.js +19 -11
  30. package/dist/waitFor.js.map +1 -1
  31. package/docs/documents/Changelog.html +70 -55
  32. package/docs/functions/index.assertProps.html +2 -2
  33. package/docs/functions/index.cap.html +2 -2
  34. package/docs/functions/index.capitalize.html +2 -2
  35. package/docs/functions/index.coalesce.html +2 -2
  36. package/docs/functions/index.compareArrays.html +2 -2
  37. package/docs/functions/index.compareProps.html +2 -2
  38. package/docs/functions/index.deserialize.html +2 -2
  39. package/docs/functions/index.ensureArray.html +2 -2
  40. package/docs/functions/index.ensureDate.html +2 -2
  41. package/docs/functions/index.ensureError.html +2 -2
  42. package/docs/functions/index.ensurePrefix.html +2 -2
  43. package/docs/functions/index.ensureSuffix.html +2 -2
  44. package/docs/functions/index.ensureTimestamp.html +2 -2
  45. package/docs/functions/index.escapeRegExp.html +2 -2
  46. package/docs/functions/index.formatDate.html +2 -2
  47. package/docs/functions/index.formatHash.html +2 -2
  48. package/docs/functions/index.get.html +3 -3
  49. package/docs/functions/index.getMultiple.html +2 -2
  50. package/docs/functions/index.hasProps.html +2 -2
  51. package/docs/functions/index.ignore.html +2 -2
  52. package/docs/functions/index.insertSeparator.html +2 -2
  53. package/docs/functions/index.isEmpty.html +2 -2
  54. package/docs/functions/index.isNumericString.html +2 -2
  55. package/docs/functions/index.isPlainObject.html +2 -2
  56. package/docs/functions/index.last.html +2 -2
  57. package/docs/functions/index.later-1.html +2 -2
  58. package/docs/functions/index.mapAsync.html +2 -2
  59. package/docs/functions/index.mapValues.html +2 -2
  60. package/docs/functions/index.match.html +2 -2
  61. package/docs/functions/index.memoize.html +2 -2
  62. package/docs/functions/index.merge.html +2 -2
  63. package/docs/functions/index.mostFrequent.html +2 -2
  64. package/docs/functions/index.noop.html +2 -2
  65. package/docs/functions/index.occurrences.html +2 -2
  66. package/docs/functions/index.omit.html +2 -2
  67. package/docs/functions/index.pick.html +2 -2
  68. package/docs/functions/index.pull.html +2 -2
  69. package/docs/functions/index.race.html +2 -2
  70. package/docs/functions/index.remove.html +2 -2
  71. package/docs/functions/index.removeCommonProperties.html +2 -2
  72. package/docs/functions/index.replace.html +2 -2
  73. package/docs/functions/index.replaceDeep.html +2 -2
  74. package/docs/functions/index.rethrow.html +2 -2
  75. package/docs/functions/index.retry.html +2 -2
  76. package/docs/functions/index.round.html +2 -2
  77. package/docs/functions/index.safe.html +2 -2
  78. package/docs/functions/index.sample.html +2 -2
  79. package/docs/functions/index.samples.html +2 -2
  80. package/docs/functions/index.scale.html +3 -2
  81. package/docs/functions/index.seq.html +2 -2
  82. package/docs/functions/index.seqEarlyBreak.html +2 -2
  83. package/docs/functions/index.serialize.html +2 -2
  84. package/docs/functions/index.serializeToBuffer.html +2 -2
  85. package/docs/functions/index.set.html +2 -2
  86. package/docs/functions/index.setImmutable.html +2 -2
  87. package/docs/functions/index.shuffle.html +2 -2
  88. package/docs/functions/index.sortBy.html +2 -2
  89. package/docs/functions/index.sortByMultiple.html +3 -3
  90. package/docs/functions/index.sortProps.html +2 -2
  91. package/docs/functions/index.stripPrefix.html +2 -2
  92. package/docs/functions/index.stripSuffix.html +2 -2
  93. package/docs/functions/index.throttle.html +3 -3
  94. package/docs/functions/index.toggle.html +2 -2
  95. package/docs/functions/index.trim.html +2 -2
  96. package/docs/functions/index.trimEnd.html +2 -2
  97. package/docs/functions/index.trimStart.html +2 -2
  98. package/docs/functions/index.truthy.html +2 -2
  99. package/docs/functions/index.unique.html +2 -2
  100. package/docs/functions/index.unserializeFromBuffer.html +2 -2
  101. package/docs/functions/index.wait.html +2 -2
  102. package/docs/functions/index.waitFor.html +2 -2
  103. package/docs/functions/index.waitSync.html +2 -2
  104. package/docs/index.html +2 -2
  105. package/docs/interfaces/index.ComparePropsOptions.html +3 -3
  106. package/docs/interfaces/index.GetMultipleSource.html +2 -2
  107. package/docs/interfaces/index.GetSource.html +2 -2
  108. package/docs/interfaces/index.IsNumericStringOptions.html +2 -2
  109. package/docs/interfaces/index.OccurencesOptions.html +2 -2
  110. package/docs/interfaces/index.SetImmutableSource.html +2 -2
  111. package/docs/interfaces/index.SetSource.html +2 -2
  112. package/docs/interfaces/index.ThrottleOptions.html +3 -3
  113. package/docs/interfaces/index.ThrottledFunctionExtras.html +3 -3
  114. package/docs/modules/index.html +1 -1
  115. package/docs/modules.html +1 -1
  116. package/docs/types/index.CustomDeserializers.html +1 -1
  117. package/docs/types/index.CustomSerializers.html +1 -1
  118. package/docs/types/index.Later.html +2 -2
  119. package/docs/types/index.MapValuesFn.html +2 -2
  120. package/docs/types/index.MatchCallback.html +1 -1
  121. package/docs/types/index.MergeTwo.html +2 -2
  122. package/docs/types/index.SeqEarlyBreaker.html +2 -2
  123. package/docs/types/index.SeqFn.html +2 -2
  124. package/docs/types/index.SeqFunctions.html +2 -2
  125. package/docs/types/index.SetImmutablePath.html +2 -2
  126. package/docs/types/index.ThrottledFunction.html +1 -1
  127. package/docs/variables/index.mapValuesUNSET.html +2 -2
  128. package/docs/variables/index.mergeUNSET.html +2 -2
  129. package/esm/get.d.ts.map +1 -1
  130. package/esm/get.js +1 -1
  131. package/esm/get.js.map +1 -1
  132. package/esm/mostFrequent.d.ts +1 -1
  133. package/esm/mostFrequent.d.ts.map +1 -1
  134. package/esm/mostFrequent.js +2 -5
  135. package/esm/mostFrequent.js.map +1 -1
  136. package/esm/samples.d.ts.map +1 -1
  137. package/esm/samples.js +2 -1
  138. package/esm/samples.js.map +1 -1
  139. package/esm/scale.d.ts.map +1 -1
  140. package/esm/scale.js +3 -0
  141. package/esm/scale.js.map +1 -1
  142. package/esm/sortByMultiple.d.ts.map +1 -1
  143. package/esm/sortByMultiple.js.map +1 -1
  144. package/esm/throttle.d.ts +3 -3
  145. package/esm/throttle.d.ts.map +1 -1
  146. package/esm/throttle.js +2 -3
  147. package/esm/throttle.js.map +1 -1
  148. package/esm/trimEnd.d.ts.map +1 -1
  149. package/esm/trimEnd.js +3 -0
  150. package/esm/trimEnd.js.map +1 -1
  151. package/esm/trimStart.d.ts.map +1 -1
  152. package/esm/trimStart.js +3 -0
  153. package/esm/trimStart.js.map +1 -1
  154. package/esm/waitFor.d.ts.map +1 -1
  155. package/esm/waitFor.js +19 -11
  156. package/esm/waitFor.js.map +1 -1
  157. package/package.json +12 -13
  158. package/pnpm-workspace.yaml +2 -0
  159. package/src/get.ts +1 -1
  160. package/src/mostFrequent.spec.ts +2 -1
  161. package/src/mostFrequent.ts +3 -7
  162. package/src/race.spec.ts +42 -0
  163. package/src/race.ts +0 -2
  164. package/src/retry.spec.ts +87 -0
  165. package/src/retry.ts +0 -2
  166. package/src/samples.spec.ts +9 -0
  167. package/src/samples.ts +4 -1
  168. package/src/scale.spec.ts +18 -0
  169. package/src/scale.ts +4 -0
  170. package/src/sortByMultiple.ts +1 -0
  171. package/src/throttle.spec.ts +35 -0
  172. package/src/throttle.ts +7 -8
  173. package/src/trimEnd.spec.ts +5 -0
  174. package/src/trimEnd.ts +3 -0
  175. package/src/trimStart.spec.ts +5 -0
  176. package/src/trimStart.ts +3 -0
  177. package/src/waitFor.spec.ts +61 -0
  178. package/src/waitFor.ts +33 -15
  179. package/src/waitSync.ts +2 -2
@@ -1,7 +1,14 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(pnpm test:*)"
4
+ "Bash(pnpm test:*)",
5
+ "Bash(pnpm run *)",
6
+ "Bash(npm test *)",
7
+ "Bash(npx tsc *)",
8
+ "Bash(git log *)",
9
+ "Bash(npx jest *)",
10
+ "Bash(pnpm typecheck *)",
11
+ "Bash(pnpm lint *)"
5
12
  ]
6
13
  }
7
14
  }
package/CHANGELOG.md CHANGED
@@ -6,6 +6,20 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
  ## [UNRELEASED]
7
7
  - (nothing yet)
8
8
 
9
+ ## [4.8.2] - 2026-06-14
10
+ ### Changed
11
+ - `waitFor` rejected errors now keep the original error as `cause` and their stack trace points at the caller
12
+ - `mostFrequent` return type is now `T | undefined` (it returns `undefined` for empty arrays)
13
+ - `throttle`'s `flush` is now correctly typed to return the function's result instead of `void`
14
+ ### Fixed
15
+ - `waitFor` could call the check function too frequently
16
+ - `trimStart` and `trimEnd` infinite loop when the characters to trim were an empty string
17
+ - `samples` padding the result with `undefined` when `allowShuffle` was used with a count greater than the array length
18
+ - `scale` now throws instead of returning `NaN` when `fromMin` equals `fromMax`
19
+ - `throttle` `flush` running the planned call and then scheduling another one instead of running it just once
20
+ ### Dev
21
+ - added missing tests for `race`, `retry` and `throttle.flush`
22
+
9
23
  ## [4.8.1] - 2026-01-28
10
24
  ### Fixed
11
25
  - removed unserializeFromBuffer artificial limit of returned items
package/dist/get.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../src/get.ts"],"names":[],"mappings":"AAKA,UAAU,MAAM;IAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AA2B3C,QAAA,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,EAAE,EAAE,eAAc,OAAmB,KAAG,OAc7F,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,CAAC;AAEf,YAAY,EACR,MAAM,IAAI,SAAS,GACtB,CAAC"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../src/get.ts"],"names":[],"mappings":"AAKA,UAAU,MAAM;IAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AA2B3C,QAAA,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,GAAG,MAAM,EAAE,EAAE,eAAe,OAAO,KAAG,OAclF,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,CAAC;AAEf,YAAY,EACR,MAAM,IAAI,SAAS,GACtB,CAAC"}
package/dist/get.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.get = void 0;
4
- const get = (source, property, defaultValue = undefined) => {
4
+ const get = (source, property, defaultValue) => {
5
5
  const properties = typeof property === "string" ? property.split(".") : [...property];
6
6
  let result = source;
7
7
  while (properties.length) {
package/dist/get.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../src/get.ts"],"names":[],"mappings":";;;AAgCA,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,QAA2B,EAAE,eAAwB,SAAS,EAAW,EAAE;IACpG,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEtF,IAAI,MAAM,GAAY,MAAM,CAAC;IAC7B,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAG,CAAC;QACpC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YAC5D,MAAM,GAAI,MAAiB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;aACI,CAAC;YACF,OAAO,YAAY,CAAC;QACxB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEO,kBAAG"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../src/get.ts"],"names":[],"mappings":";;;AAgCA,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,QAA2B,EAAE,YAAsB,EAAW,EAAE;IACzF,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEtF,IAAI,MAAM,GAAY,MAAM,CAAC;IAC7B,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAG,CAAC;QACpC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YAC5D,MAAM,GAAI,MAAiB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;aACI,CAAC;YACF,OAAO,YAAY,CAAC;QACxB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEO,kBAAG"}
@@ -1,3 +1,3 @@
1
- declare const mostFrequent: <T>(array: T[]) => T;
1
+ declare const mostFrequent: <T>(array: T[]) => T | undefined;
2
2
  export { mostFrequent, };
3
3
  //# sourceMappingURL=mostFrequent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mostFrequent.d.ts","sourceRoot":"","sources":["../src/mostFrequent.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,CAmBrC,CAAC;AAEF,OAAO,EACH,YAAY,GACf,CAAC"}
1
+ {"version":3,"file":"mostFrequent.d.ts","sourceRoot":"","sources":["../src/mostFrequent.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,CAAC,GAAG,SAezC,CAAC;AAEF,OAAO,EACH,YAAY,GACf,CAAC"}
@@ -5,11 +5,8 @@ const mostFrequent = (array) => {
5
5
  let top = 0, topValue = array[0];
6
6
  const map = new Map();
7
7
  array.forEach(value => {
8
- if (!map.has(value)) {
9
- map.set(value, 0);
10
- }
11
- const next = map.get(value) + 1;
12
- map.set(value, map.get(value) + 1);
8
+ const next = (map.get(value) ?? 0) + 1;
9
+ map.set(value, next);
13
10
  if (next > top) {
14
11
  top = next;
15
12
  topValue = value;
@@ -1 +1 @@
1
- {"version":3,"file":"mostFrequent.js","sourceRoot":"","sources":["../src/mostFrequent.ts"],"names":[],"mappings":";;;AAIA,MAAM,YAAY,GAAG,CAAI,KAAU,EAAK,EAAE;IACtC,IAAI,GAAG,GAAG,CAAC,EACP,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAE,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,GAAG,GAAG,IAAI,CAAC;YACX,QAAQ,GAAG,KAAK,CAAC;QACrB,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAGE,oCAAY"}
1
+ {"version":3,"file":"mostFrequent.js","sourceRoot":"","sources":["../src/mostFrequent.ts"],"names":[],"mappings":";;;AAIA,MAAM,YAAY,GAAG,CAAI,KAAU,EAAiB,EAAE;IAClD,IAAI,GAAG,GAAG,CAAC,EACP,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,GAAG,GAAG,IAAI,CAAC;YACX,QAAQ,GAAG,KAAK,CAAC;QACrB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAGE,oCAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"samples.d.ts","sourceRoot":"","sources":["../src/samples.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,gBAAgB,MAAM,EAAE,sBAAoB,KAAG,CAAC,EA0B/E,CAAC;AAEF,OAAO,EACH,OAAO,GACV,CAAC"}
1
+ {"version":3,"file":"samples.d.ts","sourceRoot":"","sources":["../src/samples.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,gBAAgB,MAAM,EAAE,sBAAoB,KAAG,CAAC,EA6B/E,CAAC;AAEF,OAAO,EACH,OAAO,GACV,CAAC"}
package/dist/samples.js CHANGED
@@ -12,9 +12,10 @@ const samples = (array, elementsToPick, allowShuffle = false) => {
12
12
  return array;
13
13
  }
14
14
  const keys = Object.keys(array);
15
+ const toPick = Math.min(elementsToPick, keys.length);
15
16
  let picked = 0;
16
17
  const result = [];
17
- while (picked < elementsToPick) {
18
+ while (picked < toPick) {
18
19
  const indexOfKey = Math.floor(Math.random() * keys.length);
19
20
  const indexOfArray = Number(keys[indexOfKey]);
20
21
  const element = array[indexOfArray];
@@ -1 +1 @@
1
- {"version":3,"file":"samples.js","sourceRoot":"","sources":["../src/samples.ts"],"names":[],"mappings":";;;AAUA,MAAM,OAAO,GAAG,CAAI,KAAU,EAAE,cAAsB,EAAE,YAAY,GAAG,KAAK,EAAO,EAAE;IACjF,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,OAAO,MAAM,GAAG,cAAc,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAGE,0BAAO"}
1
+ {"version":3,"file":"samples.js","sourceRoot":"","sources":["../src/samples.ts"],"names":[],"mappings":";;;AAUA,MAAM,OAAO,GAAG,CAAI,KAAU,EAAE,cAAsB,EAAE,YAAY,GAAG,KAAK,EAAO,EAAE;IACjF,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAGhC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAGE,0BAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"scale.d.ts","sourceRoot":"","sources":["../src/scale.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAE/F,CAAC;AAEF,OAAO,EACH,KAAK,GACR,CAAC"}
1
+ {"version":3,"file":"scale.d.ts","sourceRoot":"","sources":["../src/scale.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAK/F,CAAC;AAEF,OAAO,EACH,KAAK,GACR,CAAC"}
package/dist/scale.js CHANGED
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.scale = void 0;
4
4
  const scale = (fromMin, fromMax, toMin, toMax, number) => {
5
+ if (fromMin === fromMax) {
6
+ throw new Error("[scale] fromMin and fromMax must not be equal");
7
+ }
5
8
  return toMin + ((number - fromMin) / (fromMax - fromMin) * (toMax - toMin));
6
9
  };
7
10
  exports.scale = scale;
package/dist/scale.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scale.js","sourceRoot":"","sources":["../src/scale.ts"],"names":[],"mappings":";;;AAWA,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,KAAa,EAAE,KAAa,EAAE,MAAc,EAAU,EAAE;IACrG,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC;AAGE,sBAAK"}
1
+ {"version":3,"file":"scale.js","sourceRoot":"","sources":["../src/scale.ts"],"names":[],"mappings":";;;AAYA,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,KAAa,EAAE,KAAa,EAAE,MAAc,EAAU,EAAE;IACrG,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC;AAGE,sBAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortByMultiple.d.ts","sourceRoot":"","sources":["../src/sortByMultiple.ts"],"names":[],"mappings":"AA6BA,QAAA,MAAM,cAAc,GAEhB,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAC/C,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAExB,eAAe,CAAC,EAChB,YAAW,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAQ,EAEtD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAChD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAgB7B,CAAC;AAEF,OAAO,EACH,cAAc,GACjB,CAAC"}
1
+ {"version":3,"file":"sortByMultiple.d.ts","sourceRoot":"","sources":["../src/sortByMultiple.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,cAAc,GAEhB,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAC/C,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAExB,eAAe,CAAC,EAChB,YAAW,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAQ,EAEtD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAChD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAgB7B,CAAC;AAEF,OAAO,EACH,cAAc,GACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortByMultiple.js","sourceRoot":"","sources":["../src/sortByMultiple.ts"],"names":[],"mappings":";;;AA6BA,MAAM,cAAc,GAAG,CAKnB,aAAgB,EAChB,YAAkD,IAAI,EAEtD,aAA+C,EACnB,EAAE,CAAC,CAAC,CAAI,EAAE,CAAI,EAAc,EAAE;IAC1D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QAEvC,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3F,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAEpB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGE,wCAAc"}
1
+ {"version":3,"file":"sortByMultiple.js","sourceRoot":"","sources":["../src/sortByMultiple.ts"],"names":[],"mappings":";;;AA8BA,MAAM,cAAc,GAAG,CAKnB,aAAgB,EAChB,YAAkD,IAAI,EAEtD,aAA+C,EACnB,EAAE,CAAC,CAAC,CAAI,EAAE,CAAI,EAAc,EAAE;IAC1D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QAEvC,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3F,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAEpB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGE,wCAAc"}
@@ -2,12 +2,12 @@ interface Opts {
2
2
  leading?: boolean;
3
3
  trailing?: boolean;
4
4
  }
5
- interface Extras {
5
+ interface Extras<R = unknown> {
6
6
  cancel: () => void;
7
- flush: () => void;
7
+ flush: () => R | undefined;
8
8
  }
9
9
  type CanReturnUndefined<F extends (...args: any[]) => any> = (...args: Parameters<F>) => ReturnType<F> | undefined;
10
- declare const throttle: <RT, F extends (...args: any[]) => RT>(fn: F, time?: number | [number, ...number[]], options?: Opts) => CanReturnUndefined<F> & Extras;
10
+ declare const throttle: <RT, F extends (...args: any[]) => RT>(fn: F, time?: number | [number, ...number[]], options?: Opts) => CanReturnUndefined<F> & Extras<RT>;
11
11
  export { throttle, };
12
12
  export type { Extras as ThrottledFunctionExtras, Opts as ThrottleOptions, CanReturnUndefined as ThrottledFunction, };
13
13
  //# sourceMappingURL=throttle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../src/throttle.ts"],"names":[],"mappings":"AAAA,UAAU,IAAI;IAIV,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,MAAM;IAIZ,MAAM,EAAE,MAAM,IAAI,CAAC;IAInB,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB;AAQD,KAAK,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAoBnH,QAAA,MAAM,QAAQ,GAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAClD,IAAI,CAAC,EAAE,OAAM,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAK,EAAE,UAAU,IAAI,KAChE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MA4F1B,CAAC;AAEF,OAAO,EACH,QAAQ,GACX,CAAC;AAEF,YAAY,EACR,MAAM,IAAI,uBAAuB,EACjC,IAAI,IAAI,eAAe,EACvB,kBAAkB,IAAI,iBAAiB,GAC1C,CAAC"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../src/throttle.ts"],"names":[],"mappings":"AAAA,UAAU,IAAI;IAIV,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,MAAM,CAAC,CAAC,GAAG,OAAO;IAIxB,MAAM,EAAE,MAAM,IAAI,CAAC;IAInB,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC9B;AAQD,KAAK,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAoBnH,QAAA,MAAM,QAAQ,GAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAClD,IAAI,CAAC,EAAE,OAAM,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAK,EAAE,UAAU,IAAI,KAChE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CA2FnC,CAAC;AAEF,OAAO,EACH,QAAQ,GACX,CAAC;AAEF,YAAY,EACR,MAAM,IAAI,uBAAuB,EACjC,IAAI,IAAI,eAAe,EACvB,kBAAkB,IAAI,iBAAiB,GAC1C,CAAC"}
package/dist/throttle.js CHANGED
@@ -66,11 +66,10 @@ const throttle = (fn, time = 0, options) => {
66
66
  };
67
67
  throttledFn.flush = () => {
68
68
  if (timeoutId !== null) {
69
- lastRun = Date.now();
70
- lastResult = fn(...lastArgs);
71
69
  clearTimeout(timeoutId);
72
70
  timeoutId = null;
73
- return throttledFn(...lastArgs);
71
+ lastRun = Date.now();
72
+ lastResult = fn(...lastArgs);
74
73
  }
75
74
  return lastResult;
76
75
  };
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../src/throttle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../src/throttle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trimEnd.d.ts","sourceRoot":"","sources":["../src/trimEnd.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,MAMrD,CAAC;AAEF,OAAO,EACH,OAAO,GACV,CAAC"}
1
+ {"version":3,"file":"trimEnd.d.ts","sourceRoot":"","sources":["../src/trimEnd.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,MASrD,CAAC;AAEF,OAAO,EACH,OAAO,GACV,CAAC"}
package/dist/trimEnd.js CHANGED
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trimEnd = void 0;
4
4
  const trimEnd = (source, characters) => {
5
+ if (characters === "") {
6
+ return source;
7
+ }
5
8
  let s = source;
6
9
  while (s.endsWith(characters)) {
7
10
  s = s.slice(0, -characters.length);
@@ -1 +1 @@
1
- {"version":3,"file":"trimEnd.js","sourceRoot":"","sources":["../src/trimEnd.ts"],"names":[],"mappings":";;;AAWA,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,UAAkB,EAAU,EAAE;IAC3D,IAAI,CAAC,GAAG,MAAM,CAAC;IACf,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGE,0BAAO"}
1
+ {"version":3,"file":"trimEnd.js","sourceRoot":"","sources":["../src/trimEnd.ts"],"names":[],"mappings":";;;AAWA,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,UAAkB,EAAU,EAAE;IAC3D,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,GAAG,MAAM,CAAC;IACf,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGE,0BAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"trimStart.d.ts","sourceRoot":"","sources":["../src/trimStart.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,MAMvD,CAAC;AAEF,OAAO,EACH,SAAS,GACZ,CAAC"}
1
+ {"version":3,"file":"trimStart.d.ts","sourceRoot":"","sources":["../src/trimStart.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,MASvD,CAAC;AAEF,OAAO,EACH,SAAS,GACZ,CAAC"}
package/dist/trimStart.js CHANGED
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trimStart = void 0;
4
4
  const trimStart = (source, characters) => {
5
+ if (characters === "") {
6
+ return source;
7
+ }
5
8
  let s = source;
6
9
  while (s.startsWith(characters)) {
7
10
  s = s.slice(characters.length);
@@ -1 +1 @@
1
- {"version":3,"file":"trimStart.js","sourceRoot":"","sources":["../src/trimStart.ts"],"names":[],"mappings":";;;AAWA,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,UAAkB,EAAU,EAAE;IAC7D,IAAI,CAAC,GAAG,MAAM,CAAC;IACf,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGE,8BAAS"}
1
+ {"version":3,"file":"trimStart.js","sourceRoot":"","sources":["../src/trimStart.ts"],"names":[],"mappings":";;;AAWA,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,UAAkB,EAAU,EAAE;IAC7D,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,GAAG,MAAM,CAAC;IACf,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAGE,8BAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":"AAKA,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,KAAK,OAAO,GAAG;IAIX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAqBF,QAAA,MAAM,OAAO,GAAI,CAAC,EAAE,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,UAAS,OAAwB,KAAG,OAAO,CAAC,CAAC,CAsD3F,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":"AAKA,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,KAAK,OAAO,GAAG;IAIX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAiCF,QAAA,MAAM,OAAO,GAAI,CAAC,EAAE,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,UAAS,OAAwB,KAAG,OAAO,CAAC,CAAC,CA4D3F,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/waitFor.js CHANGED
@@ -8,18 +8,30 @@ const defaultOptions = {
8
8
  timeout: Infinity,
9
9
  maxTries: Infinity,
10
10
  };
11
+ const graftCallerStack = (error, callSite) => {
12
+ const callerFrames = callSite.stack?.replace(/^.*\n/u, "");
13
+ if (callerFrames) {
14
+ error.stack = error.stack ? `${error.stack}\n${callerFrames}` : callerFrames;
15
+ }
16
+ };
11
17
  const waitFor = (fn, options = defaultOptions) => {
18
+ const callSite = new Error();
12
19
  return new Promise((resolve, reject) => {
13
20
  let intervalTimer, failTimer;
21
+ const fail = (error) => {
22
+ graftCallerStack(error, callSite);
23
+ clearTimeout(failTimer);
24
+ clearTimeout(intervalTimer);
25
+ reject(error);
26
+ };
14
27
  const opts = { ...defaultOptions, ...options };
15
28
  if (typeof opts.maxTries === "number" && opts.maxTries < 1) {
16
- reject(new TypeError("[waitFor] maxTries must be greater than 0"));
29
+ fail(new TypeError("[waitFor] maxTries must be greater than 0"));
17
30
  return;
18
31
  }
19
32
  if (Number.isFinite(opts.timeout)) {
20
33
  failTimer = setTimeout(() => {
21
- reject(new Error("[waitFor] Timeout"));
22
- clearTimeout(intervalTimer);
34
+ fail(new Error("[waitFor] Timeout"));
23
35
  }, opts.timeout);
24
36
  }
25
37
  let tries = 0;
@@ -34,22 +46,18 @@ const waitFor = (fn, options = defaultOptions) => {
34
46
  }
35
47
  else {
36
48
  if (Number.isFinite(opts.maxTries) && tries >= opts.maxTries) {
37
- clearTimeout(failTimer);
38
- clearTimeout(intervalTimer);
39
- reject(new Error("[waitFor] Max tries reached"));
49
+ fail(new Error("[waitFor] Max tries reached"));
40
50
  return;
41
51
  }
42
52
  intervalTimer = setTimeout(() => {
43
53
  tryFn().catch(noop_js_1.noop);
44
- }, options.interval);
54
+ }, opts.interval);
45
55
  }
46
56
  }
47
57
  catch (error) {
48
- clearTimeout(failTimer);
49
- clearTimeout(intervalTimer);
50
- const e = new Error("[waitFor] check function threw an error");
58
+ const e = new Error("[waitFor] check function threw an error", { cause: error });
51
59
  e.details = { error };
52
- reject(e);
60
+ fail(e);
53
61
  }
54
62
  });
55
63
  tryFn().catch(noop_js_1.noop);
@@ -1 +1 @@
1
- {"version":3,"file":"waitFor.js","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":";;;AAAA,uCAAiC;AAEjC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAoB5B,MAAM,cAAc,GAAsB;IACtC,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;CACrB,CAAC;AAeF,MAAM,OAAO,GAAG,CAAI,EAAyB,EAAE,UAAmB,cAAc,EAAc,EAAE;IAC5F,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,IAAI,aAAuB,EAAE,SAAmB,CAAC;QAEjD,MAAM,IAAI,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACnE,OAAO;QACX,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,aAAa,CAAC,CAAC;YAChC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QAGd,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC;gBACD,KAAK,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;gBAE1B,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrC,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC;qBACI,CAAC;oBACF,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC3D,YAAY,CAAC,SAAS,CAAC,CAAC;wBACxB,YAAY,CAAC,aAAa,CAAC,CAAC;wBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;wBACjD,OAAO;oBACX,CAAC;oBAED,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC5B,KAAK,EAAE,CAAC,KAAK,CAAC,cAAI,CAAC,CAAC;oBACxB,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YACD,OAAO,KAAc,EAAE,CAAC;gBACpB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,YAAY,CAAC,aAAa,CAAC,CAAC;gBAE5B,MAAM,CAAC,GAAkC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC9F,CAAC,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;QACL,CAAC,CAAC,CAAC;QACH,KAAK,EAAE,CAAC,KAAK,CAAC,cAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEO,0BAAO"}
1
+ {"version":3,"file":"waitFor.js","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":"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"}