@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.
- package/.claude/settings.local.json +14 -0
- package/CHANGELOG.md +18 -0
- package/CLAUDE.md +137 -0
- package/dist/get.d.ts.map +1 -1
- package/dist/get.js +1 -1
- package/dist/get.js.map +1 -1
- package/dist/mostFrequent.d.ts +1 -1
- package/dist/mostFrequent.d.ts.map +1 -1
- package/dist/mostFrequent.js +2 -5
- package/dist/mostFrequent.js.map +1 -1
- package/dist/samples.d.ts.map +1 -1
- package/dist/samples.js +2 -1
- package/dist/samples.js.map +1 -1
- package/dist/scale.d.ts.map +1 -1
- package/dist/scale.js +3 -0
- package/dist/scale.js.map +1 -1
- package/dist/serializeToBuffer/unserializeFromBuffer.d.ts.map +1 -1
- package/dist/serializeToBuffer/unserializeFromBuffer.js +1 -3
- package/dist/serializeToBuffer/unserializeFromBuffer.js.map +1 -1
- package/dist/sortByMultiple.d.ts.map +1 -1
- package/dist/sortByMultiple.js.map +1 -1
- package/dist/throttle.d.ts +3 -3
- package/dist/throttle.d.ts.map +1 -1
- package/dist/throttle.js +2 -3
- package/dist/throttle.js.map +1 -1
- package/dist/trimEnd.d.ts.map +1 -1
- package/dist/trimEnd.js +3 -0
- package/dist/trimEnd.js.map +1 -1
- package/dist/trimStart.d.ts.map +1 -1
- package/dist/trimStart.js +3 -0
- package/dist/trimStart.js.map +1 -1
- package/dist/waitFor.d.ts.map +1 -1
- package/dist/waitFor.js +19 -11
- package/dist/waitFor.js.map +1 -1
- package/docs/documents/Changelog.html +72 -54
- package/docs/functions/index.assertProps.html +2 -2
- package/docs/functions/index.cap.html +2 -2
- package/docs/functions/index.capitalize.html +2 -2
- package/docs/functions/index.coalesce.html +2 -2
- package/docs/functions/index.compareArrays.html +2 -2
- package/docs/functions/index.compareProps.html +2 -2
- package/docs/functions/index.deserialize.html +2 -2
- package/docs/functions/index.ensureArray.html +2 -2
- package/docs/functions/index.ensureDate.html +2 -2
- package/docs/functions/index.ensureError.html +2 -2
- package/docs/functions/index.ensurePrefix.html +2 -2
- package/docs/functions/index.ensureSuffix.html +2 -2
- package/docs/functions/index.ensureTimestamp.html +2 -2
- package/docs/functions/index.escapeRegExp.html +2 -2
- package/docs/functions/index.formatDate.html +2 -2
- package/docs/functions/index.formatHash.html +2 -2
- package/docs/functions/index.get.html +3 -3
- package/docs/functions/index.getMultiple.html +2 -2
- package/docs/functions/index.hasProps.html +2 -2
- package/docs/functions/index.ignore.html +2 -2
- package/docs/functions/index.insertSeparator.html +2 -2
- package/docs/functions/index.isEmpty.html +2 -2
- package/docs/functions/index.isNumericString.html +2 -2
- package/docs/functions/index.isPlainObject.html +2 -2
- package/docs/functions/index.last.html +2 -2
- package/docs/functions/index.later-1.html +2 -2
- package/docs/functions/index.mapAsync.html +2 -2
- package/docs/functions/index.mapValues.html +2 -2
- package/docs/functions/index.match.html +2 -2
- package/docs/functions/index.memoize.html +2 -2
- package/docs/functions/index.merge.html +2 -2
- package/docs/functions/index.mostFrequent.html +2 -2
- package/docs/functions/index.noop.html +2 -2
- package/docs/functions/index.occurrences.html +2 -2
- package/docs/functions/index.omit.html +2 -2
- package/docs/functions/index.pick.html +2 -2
- package/docs/functions/index.pull.html +2 -2
- package/docs/functions/index.race.html +2 -2
- package/docs/functions/index.remove.html +2 -2
- package/docs/functions/index.removeCommonProperties.html +2 -2
- package/docs/functions/index.replace.html +2 -2
- package/docs/functions/index.replaceDeep.html +2 -2
- package/docs/functions/index.rethrow.html +2 -2
- package/docs/functions/index.retry.html +2 -2
- package/docs/functions/index.round.html +2 -2
- package/docs/functions/index.safe.html +2 -2
- package/docs/functions/index.sample.html +2 -2
- package/docs/functions/index.samples.html +2 -2
- package/docs/functions/index.scale.html +3 -2
- package/docs/functions/index.seq.html +2 -2
- package/docs/functions/index.seqEarlyBreak.html +2 -2
- package/docs/functions/index.serialize.html +2 -2
- package/docs/functions/index.serializeToBuffer.html +2 -2
- package/docs/functions/index.set.html +2 -2
- package/docs/functions/index.setImmutable.html +2 -2
- package/docs/functions/index.shuffle.html +2 -2
- package/docs/functions/index.sortBy.html +2 -2
- package/docs/functions/index.sortByMultiple.html +3 -3
- package/docs/functions/index.sortProps.html +2 -2
- package/docs/functions/index.stripPrefix.html +2 -2
- package/docs/functions/index.stripSuffix.html +2 -2
- package/docs/functions/index.throttle.html +3 -3
- package/docs/functions/index.toggle.html +2 -2
- package/docs/functions/index.trim.html +2 -2
- package/docs/functions/index.trimEnd.html +2 -2
- package/docs/functions/index.trimStart.html +2 -2
- package/docs/functions/index.truthy.html +2 -2
- package/docs/functions/index.unique.html +2 -2
- package/docs/functions/index.unserializeFromBuffer.html +2 -2
- package/docs/functions/index.wait.html +2 -2
- package/docs/functions/index.waitFor.html +2 -2
- package/docs/functions/index.waitSync.html +2 -2
- package/docs/index.html +2 -2
- package/docs/interfaces/index.ComparePropsOptions.html +3 -3
- package/docs/interfaces/index.GetMultipleSource.html +2 -2
- package/docs/interfaces/index.GetSource.html +2 -2
- package/docs/interfaces/index.IsNumericStringOptions.html +2 -2
- package/docs/interfaces/index.OccurencesOptions.html +2 -2
- package/docs/interfaces/index.SetImmutableSource.html +2 -2
- package/docs/interfaces/index.SetSource.html +2 -2
- package/docs/interfaces/index.ThrottleOptions.html +3 -3
- package/docs/interfaces/index.ThrottledFunctionExtras.html +3 -3
- package/docs/modules/index.html +1 -1
- package/docs/modules.html +1 -1
- package/docs/types/index.CustomDeserializers.html +1 -1
- package/docs/types/index.CustomSerializers.html +1 -1
- package/docs/types/index.Later.html +2 -2
- package/docs/types/index.MapValuesFn.html +2 -2
- package/docs/types/index.MatchCallback.html +1 -1
- package/docs/types/index.MergeTwo.html +2 -2
- package/docs/types/index.SeqEarlyBreaker.html +2 -2
- package/docs/types/index.SeqFn.html +2 -2
- package/docs/types/index.SeqFunctions.html +2 -2
- package/docs/types/index.SetImmutablePath.html +2 -2
- package/docs/types/index.ThrottledFunction.html +1 -1
- package/docs/variables/index.mapValuesUNSET.html +2 -2
- package/docs/variables/index.mergeUNSET.html +2 -2
- package/esm/get.d.ts.map +1 -1
- package/esm/get.js +1 -1
- package/esm/get.js.map +1 -1
- package/esm/mostFrequent.d.ts +1 -1
- package/esm/mostFrequent.d.ts.map +1 -1
- package/esm/mostFrequent.js +2 -5
- package/esm/mostFrequent.js.map +1 -1
- package/esm/samples.d.ts.map +1 -1
- package/esm/samples.js +2 -1
- package/esm/samples.js.map +1 -1
- package/esm/scale.d.ts.map +1 -1
- package/esm/scale.js +3 -0
- package/esm/scale.js.map +1 -1
- package/esm/serializeToBuffer/unserializeFromBuffer.d.ts.map +1 -1
- package/esm/serializeToBuffer/unserializeFromBuffer.js +1 -3
- package/esm/serializeToBuffer/unserializeFromBuffer.js.map +1 -1
- package/esm/sortByMultiple.d.ts.map +1 -1
- package/esm/sortByMultiple.js.map +1 -1
- package/esm/throttle.d.ts +3 -3
- package/esm/throttle.d.ts.map +1 -1
- package/esm/throttle.js +2 -3
- package/esm/throttle.js.map +1 -1
- package/esm/trimEnd.d.ts.map +1 -1
- package/esm/trimEnd.js +3 -0
- package/esm/trimEnd.js.map +1 -1
- package/esm/trimStart.d.ts.map +1 -1
- package/esm/trimStart.js +3 -0
- package/esm/trimStart.js.map +1 -1
- package/esm/waitFor.d.ts.map +1 -1
- package/esm/waitFor.js +19 -11
- package/esm/waitFor.js.map +1 -1
- package/package.json +12 -17
- package/pnpm-workspace.yaml +2 -0
- package/src/get.ts +1 -1
- package/src/mostFrequent.spec.ts +2 -1
- package/src/mostFrequent.ts +3 -7
- package/src/race.spec.ts +42 -0
- package/src/race.ts +0 -2
- package/src/retry.spec.ts +87 -0
- package/src/retry.ts +0 -2
- package/src/samples.spec.ts +9 -0
- package/src/samples.ts +4 -1
- package/src/scale.spec.ts +18 -0
- package/src/scale.ts +4 -0
- package/src/serializeToBuffer/unserializeFromBuffer.spec.ts +10 -0
- package/src/serializeToBuffer/unserializeFromBuffer.ts +1 -4
- package/src/sortByMultiple.ts +1 -0
- package/src/throttle.spec.ts +35 -0
- package/src/throttle.ts +7 -8
- package/src/trimEnd.spec.ts +5 -0
- package/src/trimEnd.ts +3 -0
- package/src/trimStart.spec.ts +5 -0
- package/src/trimStart.ts +3 -0
- package/src/waitFor.spec.ts +61 -0
- package/src/waitFor.ts +33 -15
- package/src/waitSync.ts +2 -2
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,
|
|
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
|
|
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,
|
|
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"}
|
package/dist/mostFrequent.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/mostFrequent.js
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
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;
|
package/dist/mostFrequent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mostFrequent.js","sourceRoot":"","sources":["../src/mostFrequent.ts"],"names":[],"mappings":";;;AAIA,MAAM,YAAY,GAAG,CAAI,KAAU,
|
|
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"}
|
package/dist/samples.d.ts.map
CHANGED
|
@@ -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,
|
|
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 <
|
|
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];
|
package/dist/samples.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/scale.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scale.d.ts","sourceRoot":"","sources":["../src/scale.ts"],"names":[],"mappings":"
|
|
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":";;;
|
|
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;
|
|
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
|
-
|
|
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,
|
|
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":"
|
|
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":";;;
|
|
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"}
|
package/dist/throttle.d.ts
CHANGED
|
@@ -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: () =>
|
|
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
|
package/dist/throttle.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
71
|
+
lastRun = Date.now();
|
|
72
|
+
lastResult = fn(...lastArgs);
|
|
74
73
|
}
|
|
75
74
|
return lastResult;
|
|
76
75
|
};
|
package/dist/throttle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../src/throttle.ts"],"names":[],"mappings":";;;AAsBA,MAAM,cAAc,GAAmB;IACnC,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;CACjB,CAAC;AAuBF,MAAM,QAAQ,GAAG,CACb,EAAK,EAAE,OAAuC,CAAC,EAAE,OAAc,
|
|
1
|
+
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../src/throttle.ts"],"names":[],"mappings":"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"}
|
package/dist/trimEnd.d.ts.map
CHANGED
|
@@ -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,
|
|
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);
|
package/dist/trimEnd.js.map
CHANGED
|
@@ -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"}
|
package/dist/trimStart.d.ts.map
CHANGED
|
@@ -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,
|
|
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);
|
package/dist/trimStart.js.map
CHANGED
|
@@ -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"}
|
package/dist/waitFor.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
},
|
|
54
|
+
}, opts.interval);
|
|
45
55
|
}
|
|
46
56
|
}
|
|
47
57
|
catch (error) {
|
|
48
|
-
|
|
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
|
-
|
|
60
|
+
fail(e);
|
|
53
61
|
}
|
|
54
62
|
});
|
|
55
63
|
tryFn().catch(noop_js_1.noop);
|
package/dist/waitFor.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"waitFor.js","sourceRoot":"","sources":["../src/waitFor.ts"],"names":[],"mappings":"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"}
|