Have more questions? Submit a request

Lib

[15.6.0] - 2024-05-21

Added

  • Function expectType for TypeScript testing types

[15.5.3] - 2024-05-02

Deprecated

  • Functions related to notification and synchronization in eventQueue logic

[15.5.2] - 2024-04-25

Fixed

  • AWS S3 client supports the default value for forcePathStyle from environment variable AWS_S3_FORCE_PATH_STYLE_URLS

[15.5.1] - 2024-04-25

Fixed

  • Service endpoint /status is public because it's currently used by Pingdom

[15.5.0] - 2024-04-23

Added

  • Add watchInsteadOfServe parameter to Bundler.build()
  • Allow bundler to watch files without serving them

    Fixed

  • Remove Bundler.buildPolyfill

[15.4.1] - 2024-04-03

Fixed

  • parseBasicConfig and parseServiceConfig fields parsed from package.json - devDependencies, devDependencies, peerDependencies and optionalPeerDependencies are always objects

[15.4.0] - 2024-04-02

Added

  • parseBasicConfig and parseServiceConfig include parsed data from package.json file

[15.3.0] - 2024-03-27

Added

  • jsonStringSchema for app config validation

[15.2.0] - 2024-03-18

Added

  • MongoDB connection exports metrics

Deprecated

  • Deprecated createMongodbConnection in favor of new MongoDBConnection class

[15.1.0] - 2024-03-13

Added

  • Add allowServe parameter to Bundler.build()
  • Service HTTP server logs access logs via the standard logger
  • MongoDB client debug logs all commands

Fixed

  • loading configuration variables to process.env

[15.0.0] - 2024-02-23

Changed

  • Service serves monitoring-related endpoints (/status, /ready, /alive, /metrics) on a different port for security reasons (by default port 9999)
  • Service factory accepts config in the same format as the output of parseServiceConfig

[14.6.1] - 2024-02-22

Fixed

  • Updated prom-client dependency to ^15.1.0

[14.6.0] - 2024-02-22

Added

  • Service HTTP server /alive endpoint for Kubernetes liveness probe
  • Service custom readiness callback isReady may return simply boolean value instead of a full object with custom response

[14.5.1] - 2024-02-21

Fixed

  • Better documented ILogger interface
  • parseBasicConfig and parseServiceConfig throw a more descriptive error with a link to the Wiki

[14.5.0] - 2024-02-20

Added

  • Service object returned by createService also contains express app (service.httpServer.express)
  • Calling stop() on a service object will wait, until all connections to the HTTP server are closed
  • HTTP server parses comma separated values in query to arrays

[14.4.0] - 2024-02-14

Added

  • Esbuild assets bundler
  • Standard logger

[14.3.0] - 2024-02-06

Added

  • S3 uploadFile and uploadContent methods accept optional contentType parameter

[14.2.1] - 2024-01-31

Fixed

  • AWS S3 logs debug logs
  • Rollback isomorphic-ws to 4.0.1 because of es6 module issues

[14.2.0] - 2024-01-19

Added

  • AWS S3 client methods downloadFile and listFiles

[14.1.0] - 2024-01-15

Added

  • createAwsNpmCredentialsProvider optionally accepts region
  • AWS S3 client method uploadContent

[14.0.0] - 2024-01-11

Changed

  • Upgraded to node 20
  • Upgraded mongodb to 6 and mongoose to 8

Added

  • AWS S3 client AwsS3

[13.2.3] - 2023-12-20

Fixed

  • parseBasicConfig for webpack bundler

[13.2.2] - 2023-12-20

Fixed

  • Missing node-fetch dependency when calling downloadFile

[13.2.1] - 2023-12-20

Fixed

  • Don't rely on env var npm_package_name when parsing config

[13.2.0] - 2023-12-19

Added

  • Export types that represent return types of functions parseBasicConfig and parseServiceConfig for convenience
  • createTmpDirectory
  • downloadFile
  • Auth0AuthenticationClient

[13.1.1] - 2023-12-11

Fixed

  • sentry_enabled will also be defined as boolean, when parsing basic params from env

[13.1.0] - 2023-12-07

Added

  • Upgraded to redis 3

Security

  • CVE-2021-29469

[13.0.2] - 2023-12-06

Fixed

  • Support proprietaryCluster options in latest mongoose version

[13.0.0] - 2023-12-05

Changed

  • Upgraded to Node.js 14
  • Upgraded mongodb driver to 5.9.1
  • Upgraded mongoose to 7.6.6

Fixed

  • Upgraded auth0 to 3.7.2
  • Upgraded moment-timezone to 0.5.43
  • Upgraded debug to 4.3.4

[12.6.0] - 2023-11-21

Added

  • Auth0ManagementClient

Fixed

  • Upgraded Zod library because of faulty email validation
  • Enable to log errors in retryAsyncUntil function

[12.5.0] - 2023-10-26

Added

  • Schemas intSchema and boolSchema for parsing primitive types boolean and integer from env vars

[12.4.0] - 2023-10-25

Added

  • NpmClient downloadPackage returns path to the downloaded package tarball
  • NpmClient downloadPackage argument version is optional and defaults to latest
  • MockNpmClient for testing purposes

[12.3.2] - 2023-10-25

Fixed

  • Add castEnum utility
  • Add ShortWeekday and LongWeekday union counterparts to ShortWeekdayEnum and LongWeekdayEnum

[12.3.1] - 2023-10-24

Fixed

  • Fix NpmPackPlugin with webpack4

[12.3.0] - 2023-10-18

Added

  • Convenience functions parseBasicConfig and parseServiceConfig for parsing common configuration from environment variables
  • Add getTimerEventsFromShortWeekday, getLastTimerEvent
  • Add timerType to ITimerEvent
  • Add convertWeekday util

Fix

  • Deprecate shouldBeOnByTimers, TimerWeekday, ShortWeekday, LongWeekdayEnum, ILongWeekdayTimer, ILegacyTimer

[12.2.0] - 2023-10-13

Added

  • Next timer event computing
  • NPM client library

[12.1.2] - 2023-09-21

Fixed

  • retryAsyncUntil function. It should wait in each recursion call if the callback promise is resolved successfully but the predicate is not met.

[12.1.1] - 2023-09-14

Fixed

  • Service factory doesn't require uid

[12.1.0] - 2023-09-14

Added

  • AmqpEventConsumer - high level abstraction for consuming events from AMQP with a simple interface
  • InMemoryEventConsumer - easy to use in-memory event consumer for testing purposes

[12.0.0] - 2023-09-12

Changed

  • Webpack Major version upgrade to 5 (for NpmPackPlugin)

[11.2.1] - 2023-08-25

Fixed

  • Replace unnecessary Faker lib from prod dependencies and refactor its usage

[11.2.0] - 2023-08-23

Added

  • Service factory allows providing a custom readiness callback

Fixed

  • Prevent retryAsyncUntil function from stuck in an infinite loop if a predicate is not met
  • Move express and http-status to prod dependencies because service factory depends on them

[11.1.0] - 2023-08-17

Added

  • Removed obsolete actions log queue that nobody is using anymore
  • Option to pick queue type in deviceActionsQueue for actions from device
  • AMQP connection emits events "connection_open" and "connection_closed"

[11.0.0] - 2023-08-17

Changed

  • Send device and action logs to an exchange instead of directly to queue

[10.23.0] - 2023-08-16

Added

  • Common reusable implementation of a service
  • Methods for getting current and next timeout of the progressiveWait function
  • Timeoutable promise helper
  • Option to specify custom prefetchCount when binding commands from command queue

[10.22.0] - 2023-08-09

Added

  • nonConcurrentInterval

[10.21.1] - 2023-08-07

Fixed

  • Function retryAsyncUntil is counting down for predicate callback

[10.21.0] - 2023-08-02

Added

  • New function withTimeout
  • path property into Server Socket interface

[10.20.0] - 2023-08-01

Added

  • getEnumFromString helper
  • New retry functions retryAsync and retryAsyncUntil

[10.19.2] - 2023-05-29

Fixed

  • Updated common types package - new Feature Flags

[10.19.1] - 2023-05-29

Fixed

  • Updated common types package - new Feature Flags

[10.19.0] - 2023-05-25

Added

  • New extension pack of typescript type: NullableFromPartial

[10.18.1] - 2023-05-23

Security

  • Fixed potential NPM vulnerabilities

[10.18.0] - 2023-05-23

Added

  • Debug decorator logs invocation uid for each log so that similar logs can be correlated in a large log output
  • Debug decorator can optionally log duration of the method call

[10.17.1] - 2023-05-16

Fixed

  • isDefinedForEnvironment naming convention

[10.17.0] - 2023-05-16

Added

  • Test coverage tool c8
  • isDefinedForEnvironment check function

[10.16.0] - 2023-04-26

Added

  • Option to globally switch debugDecorator to serialize logged method arguments so that the entire log fits in one line
  • Methods for getting current and next timeout of the progressiveWait function

Fixed

  • waitUntil function enhancement

[10.15.0] - 2023-04-12

Added

  • formatZodError and formatIfZodError of Zod/zodError.ts helper

Deprecated

  • formatZodErrorMessage of Zod/zod.ts moved to Zod/zodError.ts

[10.14.2] - 2023-04-06

Fixed

  • Power Timer logic accepts any number of timers with type in TIMER_${number} format

[10.14.1] - 2023-03-31

Fixed

  • locked decorator works in Node 6 >=

[10.14.0] - 2023-03-31

Added

  • wait returns cancelable promise

[10.13.0] - 2023-03-28

Added

  • Better ZodError message formatting

[10.12.0] - 2023-03-02

Added

  • headers field to current socket object

[10.11.0] - 2023-02-24

Added

  • parseBoolean function

[10.10.0] - 2023-01-31

Added

  • AMQP consume options has noAck option

[10.9.0] - 2023-01-25

Added

  • Zod utils
  • String utils

Fixed

  • Restricted node and npm versions to 12 and 6 respectively

[10.8.0] - 2023-01-23

Added

  • deviceActionsQueue wait for response from device only when not specified sessionUid
  • memoryCache function wrapper for caching function results in memory

[10.7.1] - 2023-01-19

Fixed

  • Too much pending tasks in AMQP logic
  • Count prefetch for deviceActionsQueue increased to 500

[10.7.0] - 2023-01-13

Added

  • Zod error helper

[10.6.0] - 2022-11-28

Added

  • Custom error message in function rejectAfterTimeout
  • (internal) TS targets are both ES6 and ES5

[10.5.0] - 2022-11-04

Added

  • Prometheus /metrics scraping endpoint

[10.4.2] - 2022-10-31

Fixed

  • check-deps script missing expectRanges in .check-depsrc.json config

[10.4.1] - 2022-10-27

Fixed

  • Set default value for onExit callback in GenericGracefulExit class

[10.4.0] - 2022-10-24

Added

  • Class decorator that facilitate debugging of all methods of the class
  • Word string helper with capitalize, uncapitalize, pascal and camel case conversions.
  • Tool check-deps can check expected range of versions instead of just exact match.

[10.3.0] - 2022-10-12

Added

  • Hostname (domain) field to current socket object

Fixed

  • Tool version-upgrade new works properly event for package-lock.json files with new Node 16 format.

[10.2.1] - 2022-09-02

Fixed

  • Password encryption limitation for preEncryptPassword result only

[10.2.0] - 2022-07-22

Added

  • New proprietaryServerSelectionStrategy named dynamicPriority. It selects available server based on the priority (located in proprietaryPriorityPath, by default proprietaryClusterSettings.priority /collection=proprietaryClusterSettings, property=priority/ ).

[10.1.0] - 2022-07-18

Added

  • check-deps tool ignore file .check-depsignore

[10.0.0] - 2022-06-28

Changed

  • AMQP event queue bindRejectedDetached and prepareRejectedDetached accepts new options for automatic redelivering of rejected messages
  • AMQP event queue bindRejectedMany and prepareRejectedMany accepts new options for automatic redelivering of rejected messages

[9.4.1] - 2022-06-22

Fixed

  • moment-timezone version sync with other repositories

[9.4.0] - 2022-06-01

Added

  • WebSocket server emits custom codes and reasons in special cases when the socket is closed from the server side for better debugging

[9.3.1] - 2022-05-31

Fixed

  • Lowered prefetch for action logs
  • Lowered prefetch for device logs

[9.3.0] - 2022-05-30

Added

  • Device logs

[9.2.0] - 2022-04-13

Added

  • Add getFileExtension function

[9.1.0] - 2022-03-07

Added

  • onExit callback in constructor is not mandatory in connection factories
  • optional timeout argument for InfluxDB connect method
  • Binding of rejected detached events of ES

[9.0.0] - 2022-02-18

Changed

  • Connection factories require onExit callback in constructor

Fixed

  • Fix getObjectWithOmittedValuesBy

[8.4.0] - 2022-02-07

Added

  • Object util getObjectKeys. Which is typed version of the object keys

[8.3.0] - 2022-01-31

Added

  • Add object utils omitByRecursively and getObjectWithOmittedValuesBy

Fixed

  • Allow white spaces in changelog change types

[8.2.0] - 2022-01-24

Added

  • Redis connection factory creates even connection pool
  • Function isValidTimestamp for validating UNIX timestamp
  • Function getDateTimeWithoutOffset gets date time without offset

[8.1.1] - 2021-12-10

Fixed

  • MongodD proprietary cluster ordinary connection strategy.

[8.1.0] - 2021-11-17

Added

  • redis connection factory supports graceful exit after connection error
  • mongo connection factory supports graceful exit after connection error
  • amqp connection factory supports graceful exit after connection error
  • postgres connection factory supports graceful exit after connection error
  • locked decoration can be instances scoped & this argument can be used in key callback

Fixed

  • AMQP channel provider will not be blocked by other connection instances

[8.0.0] - 2021-10-25

Changed

  • Device actions from device can have more separated queues

[7.0.1] - 2021-09-22

Fixed

  • Commands can be non persistent

[7.0.0] - 2021-09-08

Changed

  • Rewrite of AMQP architecture of device actions to dramatically improve performance

Fixed

  • AMQP won't send a RCP response if the consumer nacked the message
  • Closing connection to AMQP will not stuck forever

[6.2.2] - 2021-08-30

Fixed

  • Updated moment-timezone to the latest version

[6.2.1] - 2021-08-27

Fixed

  • Add missing path option prefix for socket.io server factory

[6.2.0] - 2021-08-26

Added

  • InfluxDB connection wrapper

[6.1.3] - 2021-08-13

Fixed

  • Added optional timestamp parameter to sendFromDevice function
  • Added optional timestamp parameter to bindPlatform function

[6.1.2] - 2021-08-09

Fixed

  • Binding queues when it has x-expires RabbitMQ flag set too short
  • Not autoDeleting queue immediately after device is disconnected (only expire queue)
  • AMQP retrying of subscription is done randomly from 0 - 10 seconds

[6.1.1] - 2021-08-04

Fixed

  • Race condition failures in AQMP channels & connections
  • Prevent channels borking when more consumers are trying to connect
  • Make device actions different sockets independent

[6.1.0] - 2021-07-26

Added

  • New option for mongodb proprietary cluster server selection strategy called ordinary
  • API for getting specific database number of redis connection

[6.0.1] - 2021-06-25

Fixed

  • Month end is calculated correctly

[6.0.0] - 2021-06-21

Changed

  • Event queues are a quorum queue type now instead of obsolete classic type.

[5.3.0] - 2021-06-01

Added

  • Observable helper function flatten
  • Redis connection infinite reconnecting

Fixed

  • Redis connection close waits to disconnect

[5.2.0] - 2021-04-21

Added

  • Allow to iterate database cursors (only forward)

Fixed

  • Correctly get date of the end of month
  • Validation of changelog for duplications

[5.1.0] - 2021-03-10

Fixed

  • Add missing prod dependencies (lodash)
  • DateTime stats logic in february times

Added

  • New interfaces for power timer logic

Deprecated

  • Old interfaces for power time logic

[5.0.4] - 2021-01-29

Fixed

  • Make sentry init lib isomorphic (support for browser)

[5.0.2] - 2020-10-28

Fixed

  • PowerTimerSettings can save null timerOn and timerOff values

[5.0.1] - 2020-10-26

Fixed

  • Optimize event queue synchronization messages to be non-persistent

[5.0.0] - 2020-10-15

Changed

  • Default number of iterations in token encryption function (currently 10000)

[4.8.0] - 2020-10-12

Added

  • Added function that enrich httpServer object with status methods

[4.7.0] - 2020-10-09

Added

  • Domain argument in rejected event queue fetching
  • Parametrize event queue binding with suppressFirstError & redeliverDelayMs

Fixed

  • Memory leak in fetching rejected event queue
  • Loosing "many" & "rejected many" events when preparing them

[4.6.1] - 2020-09-22

Fixed

  • Fetching rejected events one-by-one without locking events in queue

[4.6.0] - 2020-09-21

Added

  • Enqueue events to specific queue name (not only consumer type)
  • Adjusting dead letter parameters for fetchNext events
  • Queue for rejected domain events
  • Optionally rejecting with requeue=false (dead lettering) simple consumption using special options flag deadLetterIfRedeliveredAndErred.

[4.5.0] - 2020-09-18

Added

  • Event queue function bindMany which consumes many specified event types but using the single queue with more bindings over events exchanges.
  • Event queue can be bound with singleActiveConsumer option.
  • Command successful process response contains timestamp property.

Deprecated

  • Event queue function bindMore. Use new bindMany instead.

[4.4.1] - 2020-09-15

Fixed

  • Fixed changelog for proper version update

[4.4.0] - 2020-09-15

Added

  • Added functions for getting first/last days in month/year for statistics usage

[4.3.0] - 2020-09-07

Added

  • Event contains required secondaryIndex property and id is required as well

[4.2.0] - 2020-09-03

Added

  • Optionally enable websocket client checking that the connection is still alive

[4.1.0] - 2020-08-31

Added

  • events emitter helper to wait for either a success or fail event, resolve/reject the promise and cleanup the listeners

[4.0.3] - 2020-08-21

Fixed

  • wait synchronization in eventQueue has to be explicitly canceled & closed when used
  • Incorrect type of synchronization exchange made synchronization shared across multiple listeners

[4.0.2] - 2020-08-19

Fixed

  • Removing ununsed synchronization event queues (sometime it was kept existing unused in memory til consumer is disconnected)

[4.0.1] - 2020-08-17

Fixed

  • process command accepts second type parameters CommandError optionally

[4.0.0] - 2020-08-13

Fixed

  • Moved optional respond argument in amqp subscribe logic under standard consume options

Changed

  • Simplify types of ICommand of CQRS
  • Require command id when creating or dispatching command to CQRS

Added

  • New synchronization exchanges and queues for event sourcing

[3.2.0] - 2020-07-27

Added

  • New mongodb proprietary replica set strategy: lowReadLatency

[3.1.5] - 2020-07-14

Fixed

  • Brutal bug in device action queue when delivering postponable actions to device

[3.1.4] - 2020-07-13

Fixed

  • Another repeating (duplicating) messages when some postponable action type was bound in the past, but now it is not bound.

[3.1.3] - 2020-07-13

Fixed

  • Accidentally repeating (duplicating) messages in AMQP device actions queues when device is not reachable

[3.1.2] - 2020-06-21

Fixed

  • Fix version-upgrade tool if package-lock.json is not a part of project

[3.1.1] - 2020-06-19

Fixed

  • AMQP library: Prevent persistent device action queue failed actions to keep unacked when unexpected error happen
  • New optional tool with check deps (are exact and has no prerelease)

[3.1.0] - 2020-06-09

Added

  • AMQP library accepts proprietary autoDeleteDeadLetter

Fixed

  • AMQP consume persistent option is renamed to autoDelete (internal API)

[3.0.0] - 2020-06-05

Added

  • Notifications support for events of AMQP ES
  • Added webalize function for converting strings into url safe strings
  • Options for socket autoreconnecting using progresive wait

Fixed

  • Optimize action logs, storage commands and aggregated commands using not persistent messages
  • Added amqp eventSourcing fetchAll method to easily retrieve all events of given type
  • Possibly options for amqp generic-pool
  • Improve socket connections client/server

Changed

  • Optimized events binding (compatibility break of exchnages usage)
  • RedisLock is now capable of using much shorter redis TTL with the same releaseTimeouts settings
  • Change underlying architecture of device action queue (now uses redis for persistency and amqp only for connected devices, not compatible with all amqp schema)

[2.6.0] - 2019-11-08

Added

  • AMQP consumption can be delayed & first error rejection can be overlooked by options

[2.5.0] - 2019-09-18

Added

  • New auto-reconnecting implementation of WS socket client

[2.4.5] - 2019-08-13

Fixed

  • Prefetch 500 action logs instead of 100

[2.4.3] - 2019-07-04

Fixed

  • New optional parameter which proprietryReplicaSet and proprietaryServerSelectionStrategy=random for mongodb connection

[2.4.0] - 2019-06-19

Added

  • MongoDB connection has optional session inside used for transactions
  • Allow publish events in queue to specific consumer (for replay ES)

[2.3.2] - 2019-05-24

Fixed

  • add possibility to ack, nack aggregated commands by self (not just by throwing error)

[2.3.0] - 2019-05-20

Added

  • New stored_commands queues for optimization of command storing in mongo

Fixed

  • Device actions are stored primarely to memory only to boost up the processing
  • Semver of version in changelog can now contains even prerelease tags

[2.2.3] - 2019-04-18

Fixed

  • Queues created by healthchecking status page are not persisted (kept in rabbit forever)
  • HTTP health checking that sometimes failed because of a misused timeout parameter

[2.2.1] - 2019-04-09

Fixed

  • Allow WebSocket server to be prefixed by some path

[2.2.0] - 2019-04-08

Added

  • Added WebSocket & socket.io adapter abstraction even for client

[2.1.2] - 2019-03-14

Fixed

  • Additional callback in status middleware can use Request object now

[2.1.1] - 2019-03-13

Fixed

  • Update and unified MongoDBConnection

[2.1.0] - 2019-03-13

Added

  • Add status check library for amqp, mongo, postgre, redis and rethink

[2.0.1] - 2019-03-12

Fixed

  • Possible memory leaks in WebSocket server factory and AMQP consumption

[2.0.0] - 2019-03-11

Changed

  • Device action queues are bound to self exchange for every simple device
  • Web Socket handler abstraction has changed API to be more descriptive (not event emitter style)

Added

  • Allow set amqp binding with exclusive consumption

Fixed

  • Fix of WebSocket pinging to closed connection
  • Add exclusivity on amqp response queue
  • Fixes of possible AMQP memory leaks

[1.4.10] - 2019-03-01

Fixed

  • This time REALLY the fixed bug with AMQP double consumption

[1.4.9] - 2019-02-27

Fixed

  • Fixed bug in AMQP consumption when sometimes it would resubscribe even when it was supposed to be cancelled

[1.4.8] - 2019-02-01

Fixed

  • When web socket is closed by the server, wait 30 seconds and if it doesn't close, close it forcefully

[1.4.7] - 2019-02-01

Fixed

  • When web socket is closed explicitly by the server, make sure it still emits disconnect event

[1.4.6] - 2019-01-24

Fixed

  • Fix closing websocket server - explicitly close the server instance so that all connections are closed

[1.4.5] - 2019-01-21

Fixed

  • Minor fixes in commands sending expecting response
  • Unit tests failing
  • Posix for other than 2018 year

[1.4.2] - 2018-11-09

Fixed

  • Better raven exception handling

[1.4.1] - 2018-11-06

Fixed

  • Log more detailed information in AMQP when an error is thrown during canceling consumption of response queue

[1.4.0] - 2018-11-02

Added

  • Separate AMQP cancel consumption and close channel to allow cancelling consumption but keep using the channel

Fixed

  • Fix dangling response queues in AMQP

[1.3.0] - 2018-09-24

Added

  • New rsync copy helper function for copy over sh or ssh

[1.2.2] - 2018-09-24

Fixed

  • Timer/wait now returns Promise, not Promise<{}>

[1.2.1] - 2018-09-21

Fixed

  • Fix outdated socket server interface declaration

[1.2.0] - 2018-09-21

Added

  • Moved web socket and socket.io factories here from platform so they can be re-used in other repositories

[1.1.6] - 2018-09-18

Fixed

  • Fix async iterator polyfill error when it's already defined by the platform (Node.js 10)

[1.1.0] - 2018-05-07

Added

  • Changelog file containing all changes in current project
Was this article helpful?
0 out of 0 found this helpful
Share