@anglr/rest
Version:
Angular module representing rest services
605 lines (498 loc) • 36.1 kB
Markdown
# Changelog
## Version 14.0.0 (2025-01-24)
### Bug Fixes
- fixed `buildMiddlewares`, now correctly removes middlewares in case of multiple ignored middlewares (worked only with 1 ignored middleware before)
### Features
- new `provideRestMiddlewaresOrder` function, that provides rest middlewares execution order
- new `provideRestMethodMiddlewares` function, that provides middleware types for rest http method, executed each time
- new `provideRestDateApi` function, that provides rest date api type
- new `provideMockLogger` function, that provides mock logger
- new `RESTClientBase` class, that is base class for RESTClient class
- **properties**
- `http` instance of http client
- `injector` instance of injector used for obtaining DI
- `middlewaresOrder` array of rest middlewares in specific order in which will be middlewares executed
- `methodMiddlewares` array of middlewares that are executed for each http method
- `baseUrl` base path that is prepended to request URL
- **methods**
- `getBaseUrl` returns the base url of RESTClient
- `getDefaultHeaders` returns the default headers of RESTClient in a key-value
- `requestInterceptor` request interceptor for all methods, must return new HttpRequest since object is immutable
- `responseInterceptor` allows to intercept all responses for all methods in class
- new `RestHttpMethod` interface, that contains data that are stored when REST method is set
- new `RestMiddlewareRunNextMethod` interface, that is definition of method that is used for passing execution to the next middleware
- updated `ParameterTransformFunc` interface, now supports async parameter transformation
- updated `handleQueryParam` function
- is now `async`
- updated `handleHeaderParam` function
- is now `async`
- updated `handlePathParam` function
- is now `async`
- updated `handleQueryObjectParam` function
- is now `async`
- subpackage `@anglr/rest/datetime`
- new `provideRestDateTime` function, that provides rest date api using `@anglr/datetime`
- new `provideRestDateTimeStringFormat` function, that provides rest date time string format
- new `DATETIME_STRING_FORMAT` injection token for datetime string format
### BREAKING CHANGES
- minimal supported version of `NodeJs` is `18`
- minimal supported version of `@angular` is `19.1.0`
- minimal supported version of `rxjs` is `7.5.7`
- minimal supported version of `@jscrpt/common` is `7.0.0`
- minimal supported version of `@anglr/common` is `22.0.0`
- minimal supported version of `@anglr/datetime` is `9.0.0`
- minimal supported version of `tslib` is `2.8.1`
- removed `RestTransferStateService` service, Angular has native support for this
- updated `RESTClient` service,
- now has constructor with no parameters
- subpackage `@anglr/rest/datetime`
- removed `DATETIME_REST_DATE_API` injection token, use `provideRestDateTime`
## Version 13.0.1 (2023-07-25)
### Bug Fixes
- fixed `DisableMiddleware` imports, which points to itself
## Version 13.0.0 (2023-05-17)
### Features
- updated `ParameterTransformFunc` interface
- added new parameter `args`, used for passing all arguments from method
- updated `HeaderParameterMiddleware` middleware
- updated to use new `handleHeaderParam` function and to pass parameters args to transform function
- updated `PathParameterMiddleware` middleware
- updated to use new `handlePathParam` function and to pass parameters args to transform function
- updated `QueryObjectParameterMiddleware` middleware
- updated to use new `handleQueryObjectParam` function and to pass parameters args to transform function
- updated `QueryParameterMiddleware` middleware
- updated to use new `handleQueryParam` function and to pass parameters args to transform function
- updated `BodyParameterMiddleware` middleware
- updated to pass parameters args to transform function
- updated `ParameterTransform` decorator
- now passes args to transform functions
### BREAKING CHANGES
- updated `handleQueryParam` function
- now requires 3rd parameter `args`, which contains all arguments passed to method
- updated `handleHeaderParam` function
- now requires 3rd parameter `args`, which contains all arguments passed to method
- updated `handlePathParam` function
- now requires 3rd parameter `args`, which contains all arguments passed to method
- updated `handleQueryObjectParam` function
- now requires 4th parameter `args`, which contains all arguments passed to method
## Version 12.1.4 (2022-10-14)
### Bug Fixes
- fixed `ParamsDataIterator` optional parameters are only with `undefined` value, `null` value is not considered optional
- fixed `handleQueryParam`, now skips optional parameters (`undefined` and `null`)
- fixed `handleHeaderParam`, now skips optional parameters (`undefined` and `null`)
- fixed `handlePathParam`, optional parameters (`undefined` and `null`) are replaced by empty string
## Version 12.1.3 (2022-10-10)
### Bug Fixes
- fixed default value for `CorrelationBodyProperty` in `WebSocketClient`
## Version 12.1.2 (2022-09-21)
### Bug Fixes
- fixed problem with `null` or `undefined` parameters at start of params array in `ParamsDataIterator`
## Version 12.1.1 (2022-09-14)
### Bug Fixes
- fixed problem with missing transforms and getting param data from index out of array in `ParamsDataIterator`
## Version 12.1.0 (2022-09-09)
### Features
- new `ParamsDataIterator` class, that is iterator for params data
- new `ParamsDataIteratorItem` interface, that represents item during iteration of params data
- new `handleQueryParam` function, that handles query param and fills params dictionary
- new `handleHeaderParam` function, that handles header param and fills headers dictionary
- new `handlePathParam` function, that handles path param and return updated url
- new `handleQueryObjectParam` function, that handles query object param and fills serialized query string array
- new `mergeQueryObjectParamsWithHttpParams` function, that merges serialized query objects data with existing http params
## Version 12.0.0 (2022-06-08)
### Features
- all middlewares are now *treeshakeable* if not used
- new `middlewareTypes` type, that contains array of middleware names that are built-in
- new `RestMiddlewareType` type, that represents definition of type that implements `RestMiddleware`
- new `RestMiddlewareOrderType` type, that represents definition of type that is used for definition of order of middlewares
- updated `BASIC_DEFAULT_REST_MIDDLEWARES_ORDER` constant
- now is treeshakable
- contains all built-in middlewares
- now is of type `RestMiddlewareOrderType[]`
- updated `REST_MIDDLEWARES_ORDER` injection token
- now injects type `RestMiddlewareOrderType[]`
- updated `AdvancedCacheMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `BodyParameterMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `CacheMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `ClearAdvancedCacheMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `HeaderParameterMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `HeadersMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `IgnoredInterceptorsMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `LoggerMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `MockLoggerMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `PathParameterMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `ProducesMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `ProgressIndicatorGroupMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `QueryObjectParameterMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `QueryParameterMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `ReportProgressMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `ResponseTransformMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- updated `ResponseTypeMiddleware` middleware, now middleware type has *static* `id` to correspond with `RestMiddlewareType<RestMiddleware>`
- new `@anglr/datetime` dependency version `3.0.0`
- new `@anglr/rest/datetime` subpackage
- subpackage `@anglr/rest/datetime`
- new `DatetimeRestDateApi` service, that is `RestDateApi` implementation using `@anglr/datetime`
- new `DATETIME_REST_DATE_API` injection token used as provider for RestDateApi using datetime
### BREAKING CHANGES
- minimal supported version of `@angular` is `14.0.0`
- minimal supported version of `@anglr/common` is `11.2.0`
- dropped support of `NodeJs` version `12`
- removed subpackage `@anglr/rest/date-fns` in favor of `@anglr/datetime`
- removed subpackage `@anglr/rest/moment` in favor of `@anglr/datetime`
- removed `date-fns` dependency
- removed `moment` dependency
- updated `REST_METHOD_MIDDLEWARES` injection token
- now injects type `RestMiddlewareType<RestMiddleware>[]`
- updated `BASIC_DEFAULT_REST_METHOD_MIDDLEWARES` constant
- now is of type `RestMiddlewareType<RestMiddleware>[]`
- updated `buildMiddlewares` function, now using new *middlewares* and *middlewareOrder* types
- updated `not` function, now using middleware type `RestMiddlewareType<RestMiddleware>`
- updated `getType` function, now using middleware type `RestMiddlewareType<RestMiddleware>`
- updated `isNotType` function, now using middleware type `RestMiddlewareType<RestMiddleware>`
- updated `DisableMiddleware` decorator, now using middleware type `RestMiddlewareType<RestMiddleware>`
- updated `NotType` class
- new constructor type `RestMiddlewareType`
- new generic constraint `TType extends RestMiddleware`
- updated `RestMethodMiddlewares` interface
- `middlewareTypes` is now of type `RestMiddlewareType<RestMiddleware>[]`
- updated `ParametersMiddlewaresMetadata` interface
- `middlewareTypes` is now of type `RestMiddlewareType<RestMiddleware>[]`
- updated `BuildMiddlewaresFn` interface
- parameter `middlewares` is now of type `RestMiddlewareType<RestMiddleware>[]`
- parameter `middlewaresOrder` is now of type `RestMiddlewareOrderType[]`
- updated `RESTClient` class
- parameter `methodMiddlewares` is now of type `RestMiddlewareType<RestMiddleware>[]`
- parameter `middlewaresOrder` is now of type `RestMiddlewareOrderType[]`
## Version 11.2.0 (2022-04-29)
### Features
- new `REST_MOCK_LOGGER` injection token used for injecting MockLogger used for logging responses for mocks
- new `MockLogger` interface, that is service for logging mock responses
- method `logResponse` logs mock response
- new `MockLoggerMiddleware` middleware, that is used for logging responses for mock usages
- new `AdvancedCacheItem` interface, that is advanced cache item
- property `response` cached http response
- property `validUntil` validity date for cache
- new `AdvancedCacheItemOptions` type, that are options for advanced cache item
- new `AdvancedCacheService` service, that allows advanced caching of http responses
- method `clearCache` clears cache either for specified key, or whole cache
- method `add` adds response to advanced cache
- method `get` gets http response from cache, or null if it does not exists
- method `updateCache` updates existing cache items, if not exists it does nothing
- new `RestAdvancedCaching` interface, contains data that are used for advanced cache service
- extends `RestClearAdvancedCaching`
- property `validUntil` relative definition of 'date' for setting validity of cache, example +2d, +12h
- new `RestClearAdvancedCaching` interface, contains data that are used for clearing advanced cache service
- property `key` key to stored cache item
- new `AdvancedCache` decorator, results of requests are cached in advanced cachce service
- new `AdvancedCacheMiddleware` middleware, that is used for storing and restoring response from advanced cache service
- new `ClearAdvancedCacheMiddleware` middleware, that is used for clearing advanced cache for specific key
- new `ClearAdvancedCache` decorator, that clears advanced cache for key when call is successful
- updated `RestDateApi` interface
- method `isBeforeNow` tests whether tested date is before now
- subpackage `@anglr/rest/date-fns`
- updated `DateFnsRestDateApi` to correspond with new `RestDateApi` interface
- subpackage `@anglr/rest/moment`
- updated `MomentRestDateApi` to correspond with new `RestDateApi` interface
## Version 11.1.0 (2022-04-27)
### Features
- new `DisableMiddleware` decorator, that allows disabling of specified middleware
## Version 11.0.1 (2022-04-07)
### Bug Fixes
- fixed missing exports for `RestProgressIndicatorGroup` and `ProgressIndicatorGroupMiddleware`
## Version 11.0.0 (2022-02-24)
### Bug Fixes
- fixed problem with keeping `this` bound to *Middlewares*, causing *Injector has already been destroyed* after HRM reloading
### BREAKING CHANGES
- updated `RestMiddlewareRunMethod`, now holds only function signature with `this`
- updated `BuildMiddlewaresFn`, removed `this` from function signature
## Version 10.0.2 (2022-02-22)
### Bug Fixes
- fixed typings, not using rolled up typings for now
## Version 10.0.1 (2022-02-21)
### Bug Fixes
- fixed all method decorators, which were not applicable to methods
## Version 10.0.0 (2022-02-15)
### Features
- added new `ResponseTransformFunc` function that is used as response transform function
- added new `ParameterTransformFunc` function that is used as parameter transform function
- added middlewares to process request and response
- `ProgressIndicatorGroupMiddleware` - middleware that is used for adding support for progress indicator group passing down to progress interceptor
- package `@anglr/rest/avsc`
- added new `AVRO_REQUEST_DATA`, `AVRO_RESPONSE_DATA` http context tokens for passing AVRO request, response data into interceptor
### BREAKING CHANGES
- minimal supported version of *Angular* is `13.1.0`
- minimal supported version of `@jscrpt/common` is `2.2.0`
- minimal supported version of `@anglr/common` is `10.0.0`
- compiled as *Angular IVY* **only** with new *APF*
- removed support of *es5* target and using latest package.json features
- removed dependency `@anglr/types`, all mising types used directly here
- dropped support of `Node.js <= 12.20`
- removed `AdditionalDataMiddleware` now using `HttpContext` for passing additional data with `HttpRequest`
- removed `RestFullHttpResponse` type which was not doing anything
- removed `ɵRESTClient` which is no longer needed, updated typings
- removed `AdditionalInfoPropertyDescriptor` now using `HttpContext` for passing additional data with `HttpRequest`
- removed `AvroRequestType`, `AvroResponseType` now using `AVRO_REQUEST_DATA`, `AVRO_RESPONSE_DATA` http context tokens
## Version 9.0.0 (2022-02-15)
### Features
- added *subpackage* `@anglr/rest/moment`
- package `@anglr/rest/moment`
- added new `MomentRestDateApi` as `RestDateApi` implementation using moment js
- added new `MOMENT_REST_DATE_API` as provider for `REST_DATE_API` using moment js implementation
- added *subpackage* `@anglr/rest/date-fns`
- package `@anglr/rest/date-fns`
- added new `DateFnsRestDateApi` as `RestDateApi` implementation using date-fns
- added new `DATE_FNS_REST_DATE_API` as provider for `REST_DATE_API` using date-fns implementation
- added *subpackage* `@anglr/rest/avsc`
- package `@anglr/rest/avsc`
- you need to have avro schemas available to make it working
- added new `AvroAdapterSchemaProvider` service interface for obtaining AVRO schemas
- added new `AVRO_ADAPTER_SCHEMA_PROVIDER` *injection token* for obtaining `AvroAdapterSchemaProvider` with default provider set to dummy `NoAvroAdapterSchemaProviderService`
- added new `AvroRequest` decorator which enables AVRO processing of request (requires `AvroAdapterInterceptor` to work)
- added new `AvroResponse` decorator which enables AVRO processing of response (requires `AvroAdapterInterceptor` to work)
- added new `AvroAdapterInterceptorOptions` which provides options for `AvroAdapterInterceptor`
- `disabled` - indication whether this interceptor is disabled
- `fingerprintHeaderName` - name of header used for passing fingerprint of schema
- `typeHeaderName` - name of header used for passing name of type
- `customAcceptContentTypeHeader` - value passed to custom Accept header and Content-Type header
- added new `AvroRequestType`, `AvroResponseType`, `AvroRequestObj`, `AvroResponseObj` interfaces which enables easier definition of *additional data* available in interceptor
- added new `AvroAdapterInterceptor` interceptor, which allows AVRO request and response processing, it works together with `AvroRequest`, `AvroResponse` decorators which tells this interceptor that request or response should be processed and provides information about type
- added new `RestDateApi` used for working with date types in rest
- added new `QueryStringSerializer` which is used for serialization of objects into *query string*
- added new `REST_DATE_API` injection token used for injecting RestDateApi implementation
- added new `ProgressIndicatorGroup` decorator, which allows definition of progress indicator group name for service
- added new `AcceptAny` decorator, which sets `Accept` http header to `*/*`
- added new `TextContentType` decorator, which sets `Content-Type` http header to `text/plain`
- added new `AdditionalInfoPropertyDescriptor`, which allows definition of decorator that will fill `additionalInfo`
- added new `REST_METHOD_MIDDLEWARES` injection token used for injecting array of rest middleware types that defines order of rest middlewares
- added new `REST_MIDDLEWARES_ORDER` injection token used for injecting array of rest middleware types that are default for each rest method
- added new `BASIC_DEFAULT_REST_METHOD_MIDDLEWARES` constant with basic default array of rest middlewares order
- added new `BASIC_DEFAULT_REST_MIDDLEWARES_ORDER` constant with basic defaut array of rest middlewares used for each rest method
- added new `RestMiddleware` interface, that is used for definition of *rest middleware* classes, that are used for building request and processing response
- added new `RestMiddlewareRunMethod` interface, that defines run method signature for *rest middleware*
- added new `BuildMiddlewaresFn` interface, which is defintion of `buildMiddleware` function type
- added new `buildMiddleware` function used for building and returning array of middleware run functions
- added new `ɵRESTClient` interface, which has definition of *private* members of `RESTClient` and makes them available in decorators
- added new `NotType` type, which indicates that this type should be removed during building middlewares
- added new `not` function that helps creating `NotType` which will remove specified middleware type from middlewares
- added new `getType` function that gets underlying `Type` for `Type` and `NotType`
- added new `isNotType` function that gets indication whether is provided `Type` of `NotType`
- added new `ParametersTransformsObj` interface that defines object for parameter transforms
- added new decorator `PATCH` allowin to create *PATCH* http method builder
- `ResponseTransform` decorator now also takes function or array of functions
- `ParameterTransform` decorator now also takes function or array of functions
- *response transform* now also gets input *arguments*
- added new types that are used for helping working with metadata stored in *Descriptor*
- `RestHttpHeaders` - contains additional headers that will be added
- `RestResponseType` - contains response type that will be set
- `RestResponseTransform` - contains response transform function to be called
- `RestDisabledInterceptors` - contains array of interceptor types that will be disabled
- `RestReportProgress` - contains indication whether report progress
- `RestFullHttpResponse` - contains indication whether is response full HttpResponse or just data
- `RestMethod` - contains data that are stored when REST method is set
- `RestCaching` - contains methods used for handling 'caching'
- `KeyIndex` - information about parameter key and index
- `ParametersMetadata` - metadata for parameters
- `ParametersTransformMetadata` - contains parameters metadata for each decorated method parameters transforms
- `RestParameters` - contains parameters metadata for each decorated method parameters
- `RestMethodMiddlewares` - contains rest middleware types that will be used, decorator can add type if it wish to be used
- `ParametersMiddlewaresMetadata` - contains metadata for middleware types for parameters
- added new constants for *Http Header* names
- `HTTP_HEADER_CONTENT_TYPE` for *Content-Type* header
- `HTTP_HEADER_ACCEPT` for *Accept* header
- added middlewares to process request and response
- `ReportProgressMiddleware` - middleware that is used for handling report progress setting, if not set returns only final http response with data
- `ResponseTypeMiddleware` - middleware that is used for extracting http body and transforming it according to specified response type
- `ResponseTransformMiddleware` - middleware that is used for adding support of response transform
- `IgnoredInterceptorsMiddleware` - middleware that is used for adding support for ignored interceptors
- `AdditionalDataMiddleware`- middleware that is used for adding support for additional info to request from decorators
- `ProducesMiddleware` - middleware that is used for changing response type
- `BodyParameterMiddleware` - middleware that is used for adding body to request
- `HeaderParameterMiddleware` - middleware that is used for adding header from parameter
- `PathParameterMiddleware` - middleware that is used for modifying request URL path
- `QueryObjectParameterMiddleware` - middleware that is used for adding query string from query object
- `QueryParameterMiddleware` - middleware that is used for adding query string parameters
- `HeadersMiddleware` - middleware that is used for setting custom http headers
- `CacheMiddleware` - middleware that is used for storing and restoring response from cache
- `LoggerMiddleware` - middleware that is used for logging requests and responses
### BREAKING CHANGES
- minimal supported version of *Angular* is `10.0.0`
- minimal supported version of `@jscrpt/common` is `1.2.0`
- minimal supported version of `@anglr/common` is `9.0.0`
- minimal supported version of `crypto-js` is `4.0.0`
- removed `jquery-param` as dependency
- added new dependency `moment` for `@anglr/rest/moment`
- changed response type for `getDefaultHeaders` method of `RESTClient`
- completely refactored library and how it works
- changed signature of `responseInterceptor` method of `RESTClient`, `Observable` now must return `HttpEvent`
- changed `RESTClient` constructor parameters
## Version 8.0.0 (2021-12-22)
**DEPRECATED VERSION**
### Features
- added *subpackage* `@anglr/rest/moment`
- package `@anglr/rest/moment`
- added new `MomentRestDateApi` as `RestDateApi` implementation using moment js
- added new `MOMENT_REST_DATE_API` as provider for `REST_DATE_API` using moment js implementation
- added *subpackage* `@anglr/rest/date-fns`
- package `@anglr/rest/date-fns`
- added new `DateFnsRestDateApi` as `RestDateApi` implementation using date-fns
- added new `DATE_FNS_REST_DATE_API` as provider for `REST_DATE_API` using date-fns implementation
- added *subpackage* `@anglr/rest/avsc`
- package `@anglr/rest/avsc`
- you need to have avro schemas available to make it working
- added new `AvroAdapterSchemaProvider` service interface for obtaining AVRO schemas
- added new `AVRO_ADAPTER_SCHEMA_PROVIDER` *injection token* for obtaining `AvroAdapterSchemaProvider` with default provider set to dummy `NoAvroAdapterSchemaProviderService`
- added new `AvroRequest` decorator which enables AVRO processing of request (requires `AvroAdapterInterceptor` to work)
- added new `AvroResponse` decorator which enables AVRO processing of response (requires `AvroAdapterInterceptor` to work)
- added new `AvroAdapterInterceptorOptions` which provides options for `AvroAdapterInterceptor`
- `disabled` - indication whether this interceptor is disabled
- `fingerprintHeaderName` - name of header used for passing fingerprint of schema
- `typeHeaderName` - name of header used for passing name of type
- `customAcceptContentTypeHeader` - value passed to custom Accept header and Content-Type header
- added new `AvroRequestObj`, `AvroResponseObj` interfaces which defines AVRO data available in interceptor
- added new `AVRO_REQUEST_DATA`, `AVRO_RESPONSE_DATA` http context tokens for passing AVRO request, response data into interceptor
- added new `AvroAdapterInterceptor` interceptor, which allows AVRO request and response processing, it works together with `AvroRequest`, `AvroResponse` decorators which tells this interceptor that request or response should be processed and provides information about type
- added new `RestDateApi` used for working with date types in rest
- added new `QueryStringSerializer` which is used for serialization of objects into *query string*
- added new `REST_DATE_API` injection token used for injecting RestDateApi implementation
- added new `ProgressIndicatorGroup` decorator, which allows definition of progress indicator group name for service
- added new `AcceptAny` decorator, which sets `Accept` http header to `*/*`
- added new `TextContentType` decorator, which sets `Content-Type` http header to `text/plain`
- added new `REST_METHOD_MIDDLEWARES` injection token used for injecting array of rest middleware types that defines order of rest middlewares
- added new `REST_MIDDLEWARES_ORDER` injection token used for injecting array of rest middleware types that are default for each rest method
- added new `BASIC_DEFAULT_REST_METHOD_MIDDLEWARES` constant with basic default array of rest middlewares order
- added new `BASIC_DEFAULT_REST_MIDDLEWARES_ORDER` constant with basic defaut array of rest middlewares used for each rest method
- added new `RestMiddleware` interface, that is used for definition of *rest middleware* classes, that are used for building request and processing response
- added new `RestMiddlewareRunMethod` interface, that defines run method signature for *rest middleware*
- added new `BuildMiddlewaresFn` interface, which is defintion of `buildMiddleware` function type
- added new `buildMiddleware` function used for building and returning array of middleware run functions
- added new `NotType` type, which indicates that this type should be removed during building middlewares
- added new `not` function that helps creating `NotType` which will remove specified middleware type from middlewares
- added new `getType` function that gets underlying `Type` for `Type` and `NotType`
- added new `isNotType` function that gets indication whether is provided `Type` of `NotType`
- added new `ParametersTransformsObj` interface that defines object for parameter transforms
- added new `ResponseTransformFunc` function that is used as response transform function
- added new `ParameterTransformFunc` function that is used as parameter transform function
- added new decorator `PATCH` allowin to create *PATCH* http method builder
- `ResponseTransform` decorator now also takes function or array of functions
- `ParameterTransform` decorator now also takes function or array of functions
- *response transform* now also gets input *arguments*
- added new types that are used for helping working with metadata stored in *Descriptor*
- `RestHttpHeaders` - contains additional headers that will be added
- `RestResponseType` - contains response type that will be set
- `RestResponseTransform` - contains response transform function to be called
- `RestDisabledInterceptors` - contains array of interceptor types that will be disabled
- `RestReportProgress` - contains indication whether report progress
- `RestMethod` - contains data that are stored when REST method is set
- `RestCaching` - contains methods used for handling 'caching'
- `KeyIndex` - information about parameter key and index
- `ParametersMetadata` - metadata for parameters
- `ParametersTransformMetadata` - contains parameters metadata for each decorated method parameters transforms
- `RestParameters` - contains parameters metadata for each decorated method parameters
- `RestMethodMiddlewares` - contains rest middleware types that will be used, decorator can add type if it wish to be used
- `ParametersMiddlewaresMetadata` - contains metadata for middleware types for parameters
- added new constants for *Http Header* names
- `HTTP_HEADER_CONTENT_TYPE` for *Content-Type* header
- `HTTP_HEADER_ACCEPT` for *Accept* header
- added middlewares to process request and response
- `ReportProgressMiddleware` - middleware that is used for handling report progress setting, if not set returns only final http response with data
- `ResponseTypeMiddleware` - middleware that is used for extracting http body and transforming it according to specified response type
- `ResponseTransformMiddleware` - middleware that is used for adding support of response transform
- `IgnoredInterceptorsMiddleware` - middleware that is used for adding support for ignored interceptors
- `ProducesMiddleware` - middleware that is used for changing response type
- `BodyParameterMiddleware` - middleware that is used for adding body to request
- `HeaderParameterMiddleware` - middleware that is used for adding header from parameter
- `PathParameterMiddleware` - middleware that is used for modifying request URL path
- `QueryObjectParameterMiddleware` - middleware that is used for adding query string from query object
- `QueryParameterMiddleware` - middleware that is used for adding query string parameters
- `HeadersMiddleware` - middleware that is used for setting custom http headers
- `CacheMiddleware` - middleware that is used for storing and restoring response from cache
- `LoggerMiddleware` - middleware that is used for logging requests and responses
- `ProgressIndicatorGroupMiddleware` - middleware that is used for adding support for progress indicator group passing down to progress interceptor
### BREAKING CHANGES
- minimal supported version of *Angular* is `13.1.0`
- minimal supported version of `@jscrpt/common` is `2.2.0`
- minimal supported version of `@anglr/common` is `8.0.0`
- minimal supported version of `crypto-js` is `4.0.0`
- removed `jquery-param` as dependency
- compiled as *Angular IVY* **only** with new *APF*
- removed support of *es5* target and using latest package.json features
- removed dependency `@anglr/types`, all mising types used directly here
- dropped support of `Node.js <= 12.20`
- added new dependency `moment` for `@anglr/rest/moment`
- changed response type for `getDefaultHeaders` method of `RESTClient`
- completely refactored library and how it works
- changed signature of `responseInterceptor` method of `RESTClient`, `Observable` now must return `HttpEvent`
- changed `RESTClient` constructor parameters
## Version 7.0.1
- package `@anglr/rest/stompjs`
- fixed problem with missing default timeout, now 30 seconds
- set transport layer only to *websocket*
## Version 7.0.0
- updated to latest stable *Angular* 9
- added generating of API doc
## Version 6.1.1
- fixed compilation `aot` error
## Version 6.1.0
- added support for WebSockets using *StompJs* using `@anglr/rest/stompjs`
## Version 6.0.2
- correctly fixed ignored interceptors with same request at same time multiple times
## Version 6.0.1
- fixed ignored interceptors with same request at same time multiple times
## Version 6.0.0
- Angular IVY ready (APF compliant package)
- added support for ES2015 compilation
- Angular 8
## Version 5.0.0
- stabilized for angular v6
## Version 5.0.0-beta.3
- removed `RestTransferStateModule`, `RestTransferStateService` is injected using `Injectable`
## Version 5.0.0-beta.2
- `RestTransferStateService` is now *tree-shakeable*
- `@anglr/rest` is now marked as *sideEffects* free
## Version 5.0.0-beta.1
- aktualizácia balíčkov `Angular` na `6`
- aktualizácia `Webpack` na verziu `4`
- aktualizácia `rxjs` na verziu `6`
- automatické generovanie dokumentácie
## Version 4.0.14
- updated `ResponseTransform` now should correctly set `this` to transform method
## Version 4.0.13
- updated usage of `IgnoredInterceptorsService`, now using correctly `requestId`
## Version 4.0.12
- now setting ignore interceptor also with `urlWithParams`
## Version 4.0.11
- added support for `DisableInterceptor` decorator, which allows for specified method disable specified type of http client interceptor
## Version 4.0.10
- added support for `ParameterTransform` for `@Body` parameter
## Version 4.0.9
- added new response type `BlobAndFilename`
- fixed @angular dependencies
- fixed `Query` decorator for parameters with empty value
## Version 4.0.8
- `QueryObject` decorator for parameters now correctly supports array of objects as property value
## Version 4.0.7
- removed `TransferStateService`
- added wrapper `RestTransferStateService` for angulars `TransferState`
- now using angulars `TransferState` for SSR
## Version 4.0.6
- fixed obtaining `id` from `LocationHeader` response type
## Version 4.0.5
- fixed obtaining `LocationHeader` response type
## Version 4.0.4
- fixed default response type to 'json'
## Version 4.0.3
- fixed processing of headers and http params
## Version 4.0.2
- returned typescript version back to 2.4.2 and removed distJit
## Version 4.0.1
- added compiled outputs for Angular JIT
## Version 4.0.0
- updated angular to 5.0.0 (final)
- changed dependencies of project to peerDependencies
- more strict compilation
- updated usage of rxjs, now using operators
## Version 4.0.0-beta.1
- updated angular to >=5.0.0-rc.7
## Version 4.0.0-beta.0
- removed dependency from `@angular/http`
- using `HttpClient` instead of `Http`