UNPKG

@anglr/rest

Version:

Angular module representing rest services

605 lines (498 loc) 36.1 kB
# 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`