Compare commits

..

No commits in common. "feature/typing-improvement" and "main" have entirely different histories.

4 changed files with 5 additions and 6 deletions

View File

@ -16,7 +16,7 @@ import {Observable, of, throwError} from "rxjs";
import {catchError, switchMap} from "rxjs/operators"; import {catchError, switchMap} from "rxjs/operators";
export abstract class BaseHttpDataSourceOptionsBuilder<TQuery extends IQueryCriteria, TModel extends {}> { export abstract class BaseHttpDataSourceOptionsBuilder<TQuery extends IQueryCriteria, TModel extends {}> {
protected _commands: { [key: string]: IDataSourceCommandAdapterOptions<unknown>; } = {}; protected _commands: { [key: string]: IDataSourceCommandAdapterOptions<any>; } = {};
protected _keyResolver?: (model: TModel) => TModel[keyof TModel]; protected _keyResolver?: (model: TModel) => TModel[keyof TModel];
protected _defaultCriteria!: IQueryCriteria; protected _defaultCriteria!: IQueryCriteria;
protected _query!: IDataSourceQueryAdapterOptions<TQuery, TModel>; protected _query!: IDataSourceQueryAdapterOptions<TQuery, TModel>;
@ -93,7 +93,7 @@ export abstract class BaseHttpDataSourceOptionsBuilder<TQuery extends IQueryCrit
return this._messageErrorHandler(err); return this._messageErrorHandler(err);
} }
public addCommandByCallback<TCommand, TCommandResult>(name: string, commandHandler: (command: TCommand) => Observable<TCommandResult>, resolveCommandModel?: (event: IResolveCommandModelEvent<TModel>) => Observable<Partial<TCommand>>) { public addCommandByCallback<TCommand, TCommandResult>(name: string, commandHandler: (command: TCommand) => Observable<TCommandResult>, resolveCommandModel?: (event: IResolveCommandModelEvent<TModel>) => Observable<TCommand & any>) {
const handleWrapper = (command: TCommand) => { const handleWrapper = (command: TCommand) => {
return commandHandler(command).pipe(catchError(this._handleErrorPipe.bind(this))); return commandHandler(command).pipe(catchError(this._handleErrorPipe.bind(this)));
}; };
@ -108,7 +108,7 @@ export abstract class BaseHttpDataSourceOptionsBuilder<TQuery extends IQueryCrit
return this; return this;
} }
public addCommandByUrl<TCommand, TCommandResult>(name: string, url: string, resolveCommandModel?: (event: IResolveCommandModelEvent<TModel>) => Observable<Partial<TCommand>>, beforeCommand?: (command: TCommand) => Observable<TCommand>) { public addCommandByUrl<TCommand, TCommandResult>(name: string, url: string, resolveCommandModel?: (event: IResolveCommandModelEvent<TModel>) => Observable<TCommand & any>, beforeCommand?: (command: TCommand) => Observable<TCommand>) {
const handleWrapper = (command: TCommand) => { const handleWrapper = (command: TCommand) => {
const finalBeforeCommand = beforeCommand || (_ => of(command)); const finalBeforeCommand = beforeCommand || (_ => of(command));
return finalBeforeCommand(command) return finalBeforeCommand(command)

View File

@ -43,7 +43,7 @@ export class HttpDataSourceOptionsBuilder<TQuery extends IQueryCriteria, TModel
return finalBeforeRead(query) return finalBeforeRead(query)
.pipe( .pipe(
switchMap(finalQuery => { switchMap(finalQuery => {
return queryHandler(finalQuery); return queryHandler(finalQuery as any);
}) })
); );
} }

View File

@ -45,7 +45,6 @@ export class SingleDataSourceOptionsBuilder<TQuery extends IQueryCriteria, TMode
} }
protected convertToParams(finalQuery: TQuery) { protected convertToParams(finalQuery: TQuery) {
// todo: could use an alternative method to avoid casting to any
return Object.keys(finalQuery).reduce((prev, key) => { return Object.keys(finalQuery).reduce((prev, key) => {
prev[key] = (finalQuery as any)[key]; // Cast finalQuery to any to bypass the error prev[key] = (finalQuery as any)[key]; // Cast finalQuery to any to bypass the error
return prev; return prev;

View File

@ -75,7 +75,7 @@ export class GenericRestDataSourceService
}; };
} }
setResolveCommand<TQuery extends IQueryCriteria, TModel>(options: IDataSourceOptions<TQuery, TModel>, name: string, resolveCommandModel: (event: IResolveCommandModelEvent<TModel>) => Observable<unknown>) { setResolveCommand<TQuery extends IQueryCriteria, TModel>(options: IDataSourceOptions<TQuery, TModel>, name: string, resolveCommandModel: (event: IResolveCommandModelEvent<TModel>) => Observable<any>) {
options.transport.commands[name].resolveCommandModel = resolveCommandModel; options.transport.commands[name].resolveCommandModel = resolveCommandModel;
} }