Skip to content

Latest commit

 

History

History
140 lines (101 loc) · 6.06 KB

CHANGES.md

File metadata and controls

140 lines (101 loc) · 6.06 KB

CHANGES

v2.4.0

New Features

  • feat(pkg:ts-types): added utility type INullable<T> to make a type nullable.
  • feat(pkg:ts-types): added utility type IMaybeVoid<T> to make a type possibly void.

v2.3.0

New Features

  • fix(pkg:concurrent): introduced new counting strategy abstraction for CircuitBreaker.
  • feat(pkg:concurrent): a new ErrorRateCircuitBreakerCounter is implemented for CircuitBreaker to count the error rate of requests.
  • deprecate(pkg:concurrent): the old logics are kept in LegacyCircuitBreakerCounter and will be removed in future releases.

    The old options will still be supported and the LegacyCircuitBreakerCounter will be used internally when the old options are used.

v2.2.0

New Features

  • feat(pkg:string): regexpEscape API is now implemented using native RegExp.escape if available, with a polyfill fallback for older environments.

  • feat(pkg:string): new class WildcardCompiler to compile wildcard patterns into RegExp (string or object).

v2.1.0

New Features

  • feat(pkg:object): added API Object.deepFreeze.
  • feat(pkg:ts-types): added utility type IDeepReadonly<T> to recursively make all properties of an object type readonly.

Other Changes

  • chore: upgraded dev dependencies to latest versions.
  • build: removed all dependencies of @litert/utils-test.

v2.0.0

New Features

  • build(project): migrate the project to ESM module system
  • feat(pkg:object): added API Object.isClassConstructor to check if a value is a native ES2015 class constructor
  • feat(pkg:string): added API String.parseKeyValue
  • feat(pkg:string): added API String.parseBooleanValue
  • feat(pkg:object): added class Object.PropertyPathParser
  • feat(pkg:object): added API Object.getPropertyByPath
  • feat(pkg:test): added new API Test.autoTickMs to tick timers by a specified ms interval instead of ticking all timers immediately.
  • feat(pkg:test): added new API Test.withEnv to run tests with temporary environment variables.

Bug Fixes

  • fix(pkg:async): Async.sleep should throw error immediately if an aborted signal is passed in.
  • fix(pkg:async): Async.sleep should sleep for 0ms if 0ms is passed in, instead of resolving immediately in the next tick.

Breaking Changes

  • build(project): increased the minimum required Node.js version to v20.0.0, to support ESM modules
  • fix(pkg:object): API Object.deepMerge should not mutate the both input objects
  • deprecate(pkg:ts-types): removed type IJsonSafeValue.
  • deprecate(pkg:string): mark API String.regexpEscape as deprecated since RegExp.escape is now widely supported in modern environments.

v1.7.0

  • fix(pkg:ts-types): corrected the helper type IJsonSafeValue to whitelist undefined as a valid JSON safe value
  • feat(pkg:concurrent): added method MemoryMutex.wrap
  • feat(pkg:concurrent): added method MemoryMutex.run
  • fix(pkg:concurrent): the MemoryMutex should be non-reentrant by default, but an option is added to reenable reentrant behavior.
  • feat(pkg:async): added extra options collectResult to Async.withAbortSignal API
  • feat(pkg:async): added extra option opts.collectResult to Async.withTimeout to collect the result of the asynchronous task after timeout.

v1.6.0

  • feat(pkg:concurrent): added utility class MemoryMutex
  • fix(pkg:concurrent): DebounceController.schedule should clear existing timer when maxDelay is reached
  • fix(pkg:array): ignore empty arrays in Deduplicate function
  • test(pkg:array): added unit tests for Deduplicate function
  • fix(pkg:async): added destroy method to AbortTimeoutController to release resources in time
  • fix(pkg:async): modified abort method of AbortTimeoutController to prevent aborting multiple times
  • feat(pkg:async): added API Async.withAbortSignal
  • feat(pkg:concurrent): added utility class BatchBuffer

v1.5.0

  • feat(pkg:ts-types): added helper type IInstanceOf

  • fix(pkg:string): renamed API String.includeEvilSpaceChars to String.includeEvilWhitespaceChars

    The old API is kept for backward compatibility, but will be removed in future releases.

  • fix(pkg:string): renamed API String.replaceEvilSpaceChars to String.replaceEvilWhitespaceChars

    The old API is kept for backward compatibility, but will be removed in future releases.

v1.4.0

  • feat(pkg:concurrent): added utility class SlideWindowCounter
  • feat(pkg:concurrent): added utility class CountingRateLimiter
  • feat(pkg:concurrent): added utility class TokenBucketRateLimiter
  • feat(pkg:concurrent): added utility class TokenBucketRateLimiterManager
  • feat(pkg:concurrent): added utility class LeakyBucketRateLimiter
  • feat(pkg:concurrent): added utility class LeakyBucketRateLimiterManager
  • feat(pkg:ts-types): added helper type IJsonSafeValue
  • feat(pkg:ts-types): added helper type IMaybeArray
  • feat(pkg:concurrent): added utility class ManualBreaker
  • feat(pkg:concurrent): added utility class CircuitBreaker

v1.3.0

  • feat(pkg:test): add API Test.autoTick
  • feat(pkg:async): added utility class AbortTimeoutController
  • feat(pkg:concurrent): added utility class ThrottleController
  • feat(pkg:concurrent): added utility class DebounceController
  • feat(pkg:concurrent): added utility class FiberPool
  • feat(pkg:async): added API Async.sleep, with timer safety
  • feat(pkg:async): added API Async.autoRetry, with exponential backoff and jitter supports.
  • fix(pkg:network): export API Network.isValidIPv4Address
  • feat(pkg:network): add API Network.isValidMacAddress
  • feat(pkg:string): add API String.isEmailAddress

v1.2.1

  • feat(pkg:network): added API Network.isValidIPv4Address
  • feat(pkg:async): added utility class FiberController
  • feat(pkg:async): added utility class PromiseController
  • feat(pkg:async): added utility class BackgroundRunner
  • feat(pkg:async): added API Async.withTimeout

v1.1.1

  • build(doc): initialized project documents
  • feat(pkg:string): added name casing detection APIs
  • feat(pkg:string): added API String.toChunksBackward
  • feat(pkg:string): added API String.toChunks
  • fix(project): added missing metadata of packages