@ezez/utils 4.8.0 → 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 (188) hide show
  1. package/.claude/settings.local.json +14 -0
  2. package/CHANGELOG.md +18 -0
  3. package/CLAUDE.md +137 -0
  4. package/dist/get.d.ts.map +1 -1
  5. package/dist/get.js +1 -1
  6. package/dist/get.js.map +1 -1
  7. package/dist/mostFrequent.d.ts +1 -1
  8. package/dist/mostFrequent.d.ts.map +1 -1
  9. package/dist/mostFrequent.js +2 -5
  10. package/dist/mostFrequent.js.map +1 -1
  11. package/dist/samples.d.ts.map +1 -1
  12. package/dist/samples.js +2 -1
  13. package/dist/samples.js.map +1 -1
  14. package/dist/scale.d.ts.map +1 -1
  15. package/dist/scale.js +3 -0
  16. package/dist/scale.js.map +1 -1
  17. package/dist/serializeToBuffer/unserializeFromBuffer.d.ts.map +1 -1
  18. package/dist/serializeToBuffer/unserializeFromBuffer.js +1 -3
  19. package/dist/serializeToBuffer/unserializeFromBuffer.js.map +1 -1
  20. package/dist/sortByMultiple.d.ts.map +1 -1
  21. package/dist/sortByMultiple.js.map +1 -1
  22. package/dist/throttle.d.ts +3 -3
  23. package/dist/throttle.d.ts.map +1 -1
  24. package/dist/throttle.js +2 -3
  25. package/dist/throttle.js.map +1 -1
  26. package/dist/trimEnd.d.ts.map +1 -1
  27. package/dist/trimEnd.js +3 -0
  28. package/dist/trimEnd.js.map +1 -1
  29. package/dist/trimStart.d.ts.map +1 -1
  30. package/dist/trimStart.js +3 -0
  31. package/dist/trimStart.js.map +1 -1
  32. package/dist/waitFor.d.ts.map +1 -1
  33. package/dist/waitFor.js +19 -11
  34. package/dist/waitFor.js.map +1 -1
  35. package/docs/documents/Changelog.html +72 -54
  36. package/docs/functions/index.assertProps.html +2 -2
  37. package/docs/functions/index.cap.html +2 -2
  38. package/docs/functions/index.capitalize.html +2 -2
  39. package/docs/functions/index.coalesce.html +2 -2
  40. package/docs/functions/index.compareArrays.html +2 -2
  41. package/docs/functions/index.compareProps.html +2 -2
  42. package/docs/functions/index.deserialize.html +2 -2
  43. package/docs/functions/index.ensureArray.html +2 -2
  44. package/docs/functions/index.ensureDate.html +2 -2
  45. package/docs/functions/index.ensureError.html +2 -2
  46. package/docs/functions/index.ensurePrefix.html +2 -2
  47. package/docs/functions/index.ensureSuffix.html +2 -2
  48. package/docs/functions/index.ensureTimestamp.html +2 -2
  49. package/docs/functions/index.escapeRegExp.html +2 -2
  50. package/docs/functions/index.formatDate.html +2 -2
  51. package/docs/functions/index.formatHash.html +2 -2
  52. package/docs/functions/index.get.html +3 -3
  53. package/docs/functions/index.getMultiple.html +2 -2
  54. package/docs/functions/index.hasProps.html +2 -2
  55. package/docs/functions/index.ignore.html +2 -2
  56. package/docs/functions/index.insertSeparator.html +2 -2
  57. package/docs/functions/index.isEmpty.html +2 -2
  58. package/docs/functions/index.isNumericString.html +2 -2
  59. package/docs/functions/index.isPlainObject.html +2 -2
  60. package/docs/functions/index.last.html +2 -2
  61. package/docs/functions/index.later-1.html +2 -2
  62. package/docs/functions/index.mapAsync.html +2 -2
  63. package/docs/functions/index.mapValues.html +2 -2
  64. package/docs/functions/index.match.html +2 -2
  65. package/docs/functions/index.memoize.html +2 -2
  66. package/docs/functions/index.merge.html +2 -2
  67. package/docs/functions/index.mostFrequent.html +2 -2
  68. package/docs/functions/index.noop.html +2 -2
  69. package/docs/functions/index.occurrences.html +2 -2
  70. package/docs/functions/index.omit.html +2 -2
  71. package/docs/functions/index.pick.html +2 -2
  72. package/docs/functions/index.pull.html +2 -2
  73. package/docs/functions/index.race.html +2 -2
  74. package/docs/functions/index.remove.html +2 -2
  75. package/docs/functions/index.removeCommonProperties.html +2 -2
  76. package/docs/functions/index.replace.html +2 -2
  77. package/docs/functions/index.replaceDeep.html +2 -2
  78. package/docs/functions/index.rethrow.html +2 -2
  79. package/docs/functions/index.retry.html +2 -2
  80. package/docs/functions/index.round.html +2 -2
  81. package/docs/functions/index.safe.html +2 -2
  82. package/docs/functions/index.sample.html +2 -2
  83. package/docs/functions/index.samples.html +2 -2
  84. package/docs/functions/index.scale.html +3 -2
  85. package/docs/functions/index.seq.html +2 -2
  86. package/docs/functions/index.seqEarlyBreak.html +2 -2
  87. package/docs/functions/index.serialize.html +2 -2
  88. package/docs/functions/index.serializeToBuffer.html +2 -2
  89. package/docs/functions/index.set.html +2 -2
  90. package/docs/functions/index.setImmutable.html +2 -2
  91. package/docs/functions/index.shuffle.html +2 -2
  92. package/docs/functions/index.sortBy.html +2 -2
  93. package/docs/functions/index.sortByMultiple.html +3 -3
  94. package/docs/functions/index.sortProps.html +2 -2
  95. package/docs/functions/index.stripPrefix.html +2 -2
  96. package/docs/functions/index.stripSuffix.html +2 -2
  97. package/docs/functions/index.throttle.html +3 -3
  98. package/docs/functions/index.toggle.html +2 -2
  99. package/docs/functions/index.trim.html +2 -2
  100. package/docs/functions/index.trimEnd.html +2 -2
  101. package/docs/functions/index.trimStart.html +2 -2
  102. package/docs/functions/index.truthy.html +2 -2
  103. package/docs/functions/index.unique.html +2 -2
  104. package/docs/functions/index.unserializeFromBuffer.html +2 -2
  105. package/docs/functions/index.wait.html +2 -2
  106. package/docs/functions/index.waitFor.html +2 -2
  107. package/docs/functions/index.waitSync.html +2 -2
  108. package/docs/index.html +2 -2
  109. package/docs/interfaces/index.ComparePropsOptions.html +3 -3
  110. package/docs/interfaces/index.GetMultipleSource.html +2 -2
  111. package/docs/interfaces/index.GetSource.html +2 -2
  112. package/docs/interfaces/index.IsNumericStringOptions.html +2 -2
  113. package/docs/interfaces/index.OccurencesOptions.html +2 -2
  114. package/docs/interfaces/index.SetImmutableSource.html +2 -2
  115. package/docs/interfaces/index.SetSource.html +2 -2
  116. package/docs/interfaces/index.ThrottleOptions.html +3 -3
  117. package/docs/interfaces/index.ThrottledFunctionExtras.html +3 -3
  118. package/docs/modules/index.html +1 -1
  119. package/docs/modules.html +1 -1
  120. package/docs/types/index.CustomDeserializers.html +1 -1
  121. package/docs/types/index.CustomSerializers.html +1 -1
  122. package/docs/types/index.Later.html +2 -2
  123. package/docs/types/index.MapValuesFn.html +2 -2
  124. package/docs/types/index.MatchCallback.html +1 -1
  125. package/docs/types/index.MergeTwo.html +2 -2
  126. package/docs/types/index.SeqEarlyBreaker.html +2 -2
  127. package/docs/types/index.SeqFn.html +2 -2
  128. package/docs/types/index.SeqFunctions.html +2 -2
  129. package/docs/types/index.SetImmutablePath.html +2 -2
  130. package/docs/types/index.ThrottledFunction.html +1 -1
  131. package/docs/variables/index.mapValuesUNSET.html +2 -2
  132. package/docs/variables/index.mergeUNSET.html +2 -2
  133. package/esm/get.d.ts.map +1 -1
  134. package/esm/get.js +1 -1
  135. package/esm/get.js.map +1 -1
  136. package/esm/mostFrequent.d.ts +1 -1
  137. package/esm/mostFrequent.d.ts.map +1 -1
  138. package/esm/mostFrequent.js +2 -5
  139. package/esm/mostFrequent.js.map +1 -1
  140. package/esm/samples.d.ts.map +1 -1
  141. package/esm/samples.js +2 -1
  142. package/esm/samples.js.map +1 -1
  143. package/esm/scale.d.ts.map +1 -1
  144. package/esm/scale.js +3 -0
  145. package/esm/scale.js.map +1 -1
  146. package/esm/serializeToBuffer/unserializeFromBuffer.d.ts.map +1 -1
  147. package/esm/serializeToBuffer/unserializeFromBuffer.js +1 -3
  148. package/esm/serializeToBuffer/unserializeFromBuffer.js.map +1 -1
  149. package/esm/sortByMultiple.d.ts.map +1 -1
  150. package/esm/sortByMultiple.js.map +1 -1
  151. package/esm/throttle.d.ts +3 -3
  152. package/esm/throttle.d.ts.map +1 -1
  153. package/esm/throttle.js +2 -3
  154. package/esm/throttle.js.map +1 -1
  155. package/esm/trimEnd.d.ts.map +1 -1
  156. package/esm/trimEnd.js +3 -0
  157. package/esm/trimEnd.js.map +1 -1
  158. package/esm/trimStart.d.ts.map +1 -1
  159. package/esm/trimStart.js +3 -0
  160. package/esm/trimStart.js.map +1 -1
  161. package/esm/waitFor.d.ts.map +1 -1
  162. package/esm/waitFor.js +19 -11
  163. package/esm/waitFor.js.map +1 -1
  164. package/package.json +12 -17
  165. package/pnpm-workspace.yaml +2 -0
  166. package/src/get.ts +1 -1
  167. package/src/mostFrequent.spec.ts +2 -1
  168. package/src/mostFrequent.ts +3 -7
  169. package/src/race.spec.ts +42 -0
  170. package/src/race.ts +0 -2
  171. package/src/retry.spec.ts +87 -0
  172. package/src/retry.ts +0 -2
  173. package/src/samples.spec.ts +9 -0
  174. package/src/samples.ts +4 -1
  175. package/src/scale.spec.ts +18 -0
  176. package/src/scale.ts +4 -0
  177. package/src/serializeToBuffer/unserializeFromBuffer.spec.ts +10 -0
  178. package/src/serializeToBuffer/unserializeFromBuffer.ts +1 -4
  179. package/src/sortByMultiple.ts +1 -0
  180. package/src/throttle.spec.ts +35 -0
  181. package/src/throttle.ts +7 -8
  182. package/src/trimEnd.spec.ts +5 -0
  183. package/src/trimEnd.ts +3 -0
  184. package/src/trimStart.spec.ts +5 -0
  185. package/src/trimStart.ts +3 -0
  186. package/src/waitFor.spec.ts +61 -0
  187. package/src/waitFor.ts +33 -15
  188. package/src/waitSync.ts +2 -2
@@ -0,0 +1,14 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
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 *)"
12
+ ]
13
+ }
14
+ }
package/CHANGELOG.md CHANGED
@@ -6,6 +6,24 @@ 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
+
23
+ ## [4.8.1] - 2026-01-28
24
+ ### Fixed
25
+ - removed unserializeFromBuffer artificial limit of returned items
26
+
9
27
  ## [4.8.0] - 2026-01-22
10
28
  ### Added
11
29
  - `formatHash` method
package/CLAUDE.md ADDED
@@ -0,0 +1,137 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ `@ezez/utils` is a lightweight utility library designed as a fast, minimal alternative to Lodash. The library focuses on covering typical use cases while maintaining small bundle sizes and avoiding over-engineering. Each utility function is implemented in a single file with co-located tests following the pattern `functionName.ts` and `functionName.spec.ts`.
8
+
9
+ ## Development Commands
10
+
11
+ ### Testing
12
+ - `pnpm test` - Run all tests with Jest
13
+ - `pnpm test -- <filename>` - Run a single test file (e.g., `pnpm test -- pick.spec.ts`)
14
+ - `NODE_ENV=test jest <filepath>` - Run specific test file directly
15
+
16
+ ### Building
17
+ - `pnpm run compile` - Build both ESM and CJS outputs (runs both compile:esm and compile:cjs)
18
+ - `pnpm run compile:esm` - Build ES modules to `esm/` directory
19
+ - `pnpm run compile:cjs` - Build CommonJS modules to `dist/` directory
20
+ - `pnpm run typecheck` - Run TypeScript type checking without emitting files
21
+
22
+ ### Code Quality
23
+ - `pnpm run lint` - Lint source code with ezlint
24
+ - `pnpm run lint:fix` - Auto-fix linting issues
25
+
26
+ ### Documentation
27
+ - `pnpm run docs` - Generate TypeDoc documentation to `docs/` directory
28
+
29
+ ### Pre-publish
30
+ - `pnpm run prepublishOnly` - Runs lint, test, and docs (automatically runs before publishing)
31
+
32
+ ## Architecture
33
+
34
+ ### Dual Build System
35
+
36
+ The library supports both ESM and CommonJS through a dual compilation strategy:
37
+
38
+ 1. **ESM build** (`esm/`): Uses `tsconfig.esm.json`, compiles to ES2015 modules with target ES2022
39
+ 2. **CJS build** (`dist/`): Uses `tsconfig.cjs.json`, compiles to CommonJS modules
40
+ 3. **Post-processing**: Both builds use `resolve-tspaths` to resolve TypeScript path aliases
41
+ 4. **CJS package.json injection**: The CJS build adds a `package.json` with `{"type": "commonjs"}` to the `dist/` directory to ensure proper module resolution
42
+
43
+ The package.json exports field correctly maps:
44
+ - CommonJS: `./dist/index.js`
45
+ - ESM: `./esm/index.js`
46
+ - Types: `./esm/index.d.ts`
47
+
48
+ ### Code Organization
49
+
50
+ - **Flat structure**: All utility functions live directly in `src/` (except `serializeToBuffer` which has a subdirectory)
51
+ - **Co-located tests**: Each function has its spec file in the same directory (e.g., `pick.ts` + `pick.spec.ts`)
52
+ - **Single export per file**: Each utility file exports one main function
53
+ - **Central index**: `src/index.ts` re-exports all utilities
54
+
55
+ ### TypeScript Configuration
56
+
57
+ The project uses strict TypeScript settings:
58
+ - `strict: true` with all strictness flags enabled
59
+ - `noUncheckedIndexedAccess: true` - ensures index access returns `T | undefined`
60
+ - `exactOptionalPropertyTypes: true` - distinguishes between `undefined` and missing properties
61
+ - `noImplicitReturns: true` - requires all code paths to return a value
62
+ - Target: ES2022 with ES2015 modules (for ESM)
63
+
64
+ ### Testing Setup
65
+
66
+ - **Jest** with Babel transformation
67
+ - Spec files excluded from TypeScript compilation (`tsconfig.json` excludes `src/**/*.spec.ts`)
68
+ - Bootstrap file: `test/bootstrap.cjs`
69
+ - Babel config: `test/babel.config.cjs`
70
+ - Module mapping handles `.js` extensions for ESM compatibility
71
+
72
+ ## Coding Patterns
73
+
74
+ ### Function Structure
75
+
76
+ Each utility follows this pattern:
77
+ 1. JSDoc comment with description, parameters, examples, and return value
78
+ 2. Type-safe function signature with generics where appropriate
79
+ 3. Input validation and early returns for edge cases
80
+ 4. Implementation focusing on the typical use case
81
+ 5. Named export (not default)
82
+
83
+ Example from `pick.ts`:
84
+ ```typescript
85
+ /**
86
+ * Returns a new object with given properties copied from a source object.
87
+ *
88
+ * @param {Object} object - source object
89
+ * @param {Array.<string>} props - properties to copy
90
+ * @example
91
+ * pick({ name: "Jack", age: 69 }, ["age", "title"]);
92
+ * // { age: 69 }
93
+ * @returns {Object} - new object with given properties
94
+ */
95
+ const pick = <T extends object, K extends keyof T>(
96
+ object: T | null, props: K[],
97
+ ): ReturnType => {
98
+ // validation
99
+ // implementation
100
+ };
101
+
102
+ export { pick };
103
+ ```
104
+
105
+ ### TypeScript Patterns
106
+
107
+ - Use `@ts-expect-error` for known type system limitations with explanatory comments
108
+ - Prefer explicit return types on all functions (per 4.6.0 changelog goal)
109
+ - Use generics for type-safe object manipulation
110
+ - Handle null/undefined inputs gracefully
111
+
112
+ ### Testing Patterns
113
+
114
+ - Use `must` assertion library (not Jest expect)
115
+ - Test typical use cases first
116
+ - Test edge cases (null, undefined, empty arrays/objects)
117
+ - Test TypeScript types where relevant
118
+
119
+ ## Adding New Utilities
120
+
121
+ When adding a new utility function:
122
+
123
+ 1. Create `functionName.ts` in `src/` with the implementation
124
+ 2. Create `functionName.spec.ts` in `src/` with comprehensive tests
125
+ 3. Add export to `src/index.ts` following alphabetical order
126
+ 4. Update README.md's "Supported methods" section
127
+ 5. Run `pnpm test` to verify tests pass
128
+ 6. Run `pnpm run compile` to ensure builds work
129
+ 7. Run `pnpm run docs` to update documentation
130
+
131
+ ## Important Notes
132
+
133
+ - **Philosophy**: Cover typical use cases, not every edge case. Keep implementations simple and focused.
134
+ - **Bundle size**: This is a primary concern. Avoid unnecessary dependencies and complexity.
135
+ - **Not a polyfill**: Don't add functions that already exist in modern JavaScript (like `map`, `forEach`, etc.)
136
+ - **Lodash compatibility**: Not required. Similar behavior is fine, but perfect compatibility is not a goal.
137
+ - **Deprecation strategy**: Old functions are deprecated (like `match` deprecated in favor of `hasProps`/`assertProps`) but not removed.
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":"unserializeFromBuffer.d.ts","sourceRoot":"","sources":["../../src/serializeToBuffer/unserializeFromBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAWlG,QAAA,MAAM,qBAAqB,GAAI,EAAE,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,EACvD,sBAAsB,OAAO,MAAM,EAAE,iBAAiB,eAAe,EAAE,SAAS,MAAM,GAAG,UAAU,KACpG,EAkDF,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,IAAI,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"unserializeFromBuffer.d.ts","sourceRoot":"","sources":["../../src/serializeToBuffer/unserializeFromBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAWlG,QAAA,MAAM,qBAAqB,GAAI,EAAE,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,EACvD,sBAAsB,OAAO,MAAM,EAAE,iBAAiB,eAAe,EAAE,SAAS,MAAM,GAAG,UAAU,KACpG,EAiDF,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,IAAI,qBAAqB,EAAE,CAAC"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deserializeFromBuffer = exports.unserializeFromBuffer = void 0;
4
4
  const deserialize_js_1 = require("../deserialize.js");
5
5
  const const_js_1 = require("./const.js");
6
- const MAX_DATA_PARTS = 4;
7
6
  const NOT_FOUND = -1;
8
7
  const LAST_CHAR = -1;
9
8
  const unserializeFromBuffer = (BufferImplementation, deserializeArgs, rawData) => {
@@ -13,8 +12,7 @@ const unserializeFromBuffer = (BufferImplementation, deserializeArgs, rawData) =
13
12
  }
14
13
  let startPoint = 0;
15
14
  const result = [];
16
- let i = 0;
17
- while (i++ < MAX_DATA_PARTS) {
15
+ while (startPoint < intData.length) {
18
16
  const dataSplitPoint = intData.indexOf(0, startPoint);
19
17
  if (dataSplitPoint === NOT_FOUND) {
20
18
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"unserializeFromBuffer.js","sourceRoot":"","sources":["../../src/serializeToBuffer/unserializeFromBuffer.ts"],"names":[],"mappings":";;;AAAA,sDAAgD;AAChD,yCAAkF;AAElF,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC;AACrB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC;AAarB,MAAM,qBAAqB,GAAG,CAC1B,oBAAmC,EAAE,eAAgC,EAAE,OAA4B,EACjG,EAAE;IACJ,MAAM,OAAO,GAAe,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAE9F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM;QACV,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1G,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAiC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjE,MAAM,cAAc,GAAG,cAAc,GAAG,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,cAAc,GAAG,GAAG,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAE9D,IAAI,UAAU,KAAK,0BAAe,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aACI,IAAI,UAAU,KAAK,6BAAkB,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;aACI,CAAC;YACF,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,IAAA,4BAAW,EAAC,UAAU,EAAE,GAAG,eAAe,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAY,CAAC;AACxB,CAAC,CAAC;AAEO,sDAAqB;AAA2B,sDAAqB"}
1
+ {"version":3,"file":"unserializeFromBuffer.js","sourceRoot":"","sources":["../../src/serializeToBuffer/unserializeFromBuffer.ts"],"names":[],"mappings":";;;AAAA,sDAAgD;AAChD,yCAAkF;AAElF,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC;AACrB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC;AAarB,MAAM,qBAAqB,GAAG,CAC1B,oBAAmC,EAAE,eAAgC,EAAE,OAA4B,EACjG,EAAE;IACJ,MAAM,OAAO,GAAe,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAE9F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,OAAO,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM;QACV,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1G,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAiC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjE,MAAM,cAAc,GAAG,cAAc,GAAG,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,cAAc,GAAG,GAAG,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAE9D,IAAI,UAAU,KAAK,0BAAe,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;aACI,IAAI,UAAU,KAAK,6BAAkB,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;aACI,CAAC;YACF,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,IAAA,4BAAW,EAAC,UAAU,EAAE,GAAG,eAAe,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAY,CAAC;AACxB,CAAC,CAAC;AAEO,sDAAqB;AAA2B,sDAAqB"}
@@ -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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"}