@opra/angular
Version:
Opra internationalization package
162 lines (156 loc) • 6.24 kB
TypeScript
import * as Angular from '@angular/common/http';
import { HttpContext, HttpParams } from '@angular/common/http';
import { HttpBackend, HttpEvent, HttpResponse } from '@opra/client';
import { Observable } from 'rxjs';
import { StrictOmit } from 'ts-gems';
import * as i0 from '@angular/core';
import { InjectionToken, NgModule, Type, ModuleWithProviders } from '@angular/core';
/**
* Angular specific implementation of {@link HttpBackend} using Angular's HttpClient.
*
* @class AngularBackend
*/
declare class AngularBackend extends HttpBackend {
readonly httpClient: Angular.HttpClient;
/** Default request options */
defaults: AngularBackend.RequestDefaults;
/**
* Creates a new instance of AngularBackend.
*
* @param httpClient The Angular HttpClient instance.
* @param serviceUrl The base URL of the service.
* @param options Configuration options.
*/
constructor(httpClient: Angular.HttpClient, serviceUrl: string, options?: AngularBackend.Options);
/**
* Handles the HTTP request using Angular's HttpClient.
*
* @param init The request initialization parameters.
* @returns An observable of {@link HttpEvent}.
*/
handle(init: AngularBackend.RequestInit): Observable<HttpEvent>;
/**
* Sends the actual HTTP request.
*
* @param request The Angular HttpRequest instance.
* @protected
*/
protected send(request: Angular.HttpRequest<any>): Observable<Angular.HttpEvent<unknown>>;
/**
* Prepares the request by applying defaults and handling body content.
*
* @param init The initial request parameters.
* @returns The prepared request initialization parameters.
* @protected
*/
protected prepareRequest(init: AngularBackend.RequestInit): AngularBackend.RequestInit;
/**
* Creates a {@link HttpResponse} instance.
*
* @param init The response initiator parameters.
* @returns A new HttpResponse instance.
* @protected
*/
protected createResponse(init: HttpResponse.Initiator): HttpResponse;
/**
* Parses the response body based on Content-Type.
*
* @param fetchResponse The response to parse.
* @returns The parsed body.
* @protected
*/
protected parseBody(fetchResponse: Response): Promise<any>;
}
/**
* Namespace for {@link AngularBackend} related types and interfaces.
*
* @namespace AngularBackend
*/
declare namespace AngularBackend {
/** Configuration options for AngularBackend */
interface Options extends HttpBackend.Options {
/** Default request options */
defaults?: RequestDefaults;
}
/** Request initialization parameters for AngularBackend */
interface RequestInit extends HttpBackend.RequestInit {
/** Angular HttpContext */
context?: HttpContext;
/** Whether to report progress events */
reportProgress?: boolean;
/** Angular HttpParams */
params?: HttpParams;
/** The expected response type */
responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
/** Whether to send credentials with the request */
withCredentials?: boolean;
}
/** Request options subset for AngularBackend */
interface RequestOptions extends Pick<RequestInit, 'context' | 'reportProgress' | 'withCredentials'> {
}
/** Default request options for AngularBackend */
type RequestDefaults = StrictOmit<RequestOptions, 'context'> & {
/** Default headers */
headers: Headers;
/** Default URL parameters */
params: URLSearchParams;
};
}
type OpraClientModuleOptions = AngularBackend.Options & {
serviceUrl: string;
token?: string | InjectionToken<any>;
};
type _OpraClientModuleOptions = StrictOmit<OpraClientModuleOptions, 'token'>;
interface OpraModuleOptionsFactory {
createOptions(): Promise<_OpraClientModuleOptions> | _OpraClientModuleOptions;
}
interface OpraClientModuleAsyncOptions extends Pick<NgModule, 'imports' | 'providers'> {
token?: string | InjectionToken<any>;
useExisting?: Type<OpraModuleOptionsFactory>;
useClass?: Type<any>;
useFactory?: (...args: any[]) => Promise<_OpraClientModuleOptions> | _OpraClientModuleOptions;
deps?: any[];
}
/**
* Angular module for OPRA client.
*/
declare class OpraClientModule {
/**
* Registers a client provider.
*
* @param options Configuration options for the client.
* @returns A ModuleWithProviders instance.
*/
static registerClient(options: OpraClientModuleOptions): ModuleWithProviders<OpraClientModule>;
/**
* Registers a service provider.
*
* @param serviceClass The service class to register.
* @param options Configuration options for the service.
* @returns A ModuleWithProviders instance.
*/
static registerService<T>(serviceClass: Type<T>, options: OpraClientModuleOptions): ModuleWithProviders<OpraClientModule>;
/**
* Registers a client provider asynchronously.
*
* @param options Asynchronous configuration options for the client.
* @returns A ModuleWithProviders instance.
*/
static registerClientAsync(options: OpraClientModuleAsyncOptions): ModuleWithProviders<OpraClientModule>;
/**
* Registers a service provider asynchronously.
*
* @param serviceClass The service class to register.
* @param options Asynchronous configuration options for the service.
* @returns A ModuleWithProviders instance.
*/
static registerServiceAsync<T>(serviceClass: Type<T>, options: OpraClientModuleAsyncOptions): ModuleWithProviders<OpraClientModule>;
private static _createAsyncProviders;
private static _createAsyncOptionsProvider;
static ɵfac: i0.ɵɵFactoryDeclaration<OpraClientModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<OpraClientModule, never, never, never>;
static ɵinj: i0.ɵɵInjectorDeclaration<OpraClientModule>;
}
declare const OPRA_CLIENT_MODULE_OPTIONS = "OPRA_CLIENT_MODULE_OPTIONS";
export { AngularBackend, OPRA_CLIENT_MODULE_OPTIONS, OpraClientModule };
export type { OpraClientModuleAsyncOptions, OpraClientModuleOptions, OpraModuleOptionsFactory };