Compare commits

...

10 Commits

Author SHA1 Message Date
309c282379 1.0.65 2021-11-10 13:14:41 +01:00
90c616ca41 fix(core): update 2021-11-10 13:14:40 +01:00
57177074d0 1.0.64 2021-11-10 01:41:55 +01:00
d3b5c802cd fix(core): update 2021-11-10 01:41:55 +01:00
8e64353026 1.0.63 2021-11-07 23:46:33 +01:00
290746c191 fix(core): update 2021-11-07 23:46:32 +01:00
abefef8d7c 1.0.62 2021-11-07 15:45:18 +01:00
81b042e670 fix(core): update 2021-11-07 15:45:17 +01:00
6e3ee011a9 1.0.61 2021-11-07 15:40:02 +01:00
9b5ff4b1b5 fix(core): update 2021-11-07 15:40:01 +01:00
3 changed files with 1788 additions and 1670 deletions

3404
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "@apiglobal/typedrequest",
"version": "1.0.60",
"version": "1.0.65",
"private": false,
"description": "make typed requests towards apis",
"main": "dist_ts/index.js",
@ -15,7 +15,7 @@
"devDependencies": {
"@gitzone/tsbuild": "^2.1.28",
"@gitzone/tsbundle": "^1.0.88",
"@gitzone/tstest": "^1.0.59",
"@gitzone/tstest": "^1.0.60",
"@pushrocks/smartexpress": "^3.0.108",
"@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^16.11.6",

View File

@ -9,10 +9,7 @@ import { TypedRequest } from './typedrequest.classes.typedrequest';
* This is thought for reusing the same url endpoint for different methods
*/
export class TypedRouter {
public upstreamTypedRouter: TypedRouter;
public routerMap = new plugins.lik.ObjectMap<TypedRouter>();
public handlerMap = new plugins.lik.ObjectMap<
TypedHandler<any & plugins.typedRequestInterfaces.ITypedRequest>
>();
@ -45,11 +42,11 @@ export class TypedRouter {
* @param typedRequest
*/
public addTypedRouter(typedRouterArg: TypedRouter) {
this.routerMap.add(typedRouterArg);
}
public setUpstreamTypedRouter(typedRouterArg: TypedRouter) {
this.upstreamTypedRouter = typedRouterArg;
const routerExists = this.routerMap.findSync(routerArg => routerArg === typedRouterArg)
if (!routerExists) {
this.routerMap.add(typedRouterArg);
typedRouterArg.addTypedRouter(this);
}
}
public checkForTypedHandler(methodArg: string): boolean {
@ -63,24 +60,22 @@ export class TypedRouter {
*/
public getTypedHandlerForMethod(
methodArg: string,
checkUpstreamRouter = true
checkedRouters: TypedRouter[] = []
): TypedHandler<any> {
checkedRouters.push(this);
let typedHandler: TypedHandler<any>;
if (this.upstreamTypedRouter && checkUpstreamRouter) {
typedHandler = this.upstreamTypedRouter.getTypedHandlerForMethod(methodArg);
} else {
typedHandler = this.handlerMap.findSync((handler) => {
return handler.method === methodArg;
typedHandler = this.handlerMap.findSync((handler) => {
return handler.method === methodArg;
});
if (!typedHandler) {
this.routerMap.getArray().forEach((typedRouterArg) => {
if (!typedHandler && !checkedRouters.includes(typedRouterArg)) {
typedHandler = typedRouterArg.getTypedHandlerForMethod(methodArg, checkedRouters);
}
});
if (!typedHandler) {
this.routerMap.getArray().forEach((typedRouter) => {
if (!typedHandler) {
typedHandler = typedRouter.getTypedHandlerForMethod(methodArg, false);
}
});
}
}
return typedHandler;
@ -91,7 +86,7 @@ export class TypedRouter {
* if typedrequest object has correlation.phase === 'response' -> routes a typed request object to request fire event
* @param typedRequestArg
*/
public async routeAndAddResponse<T extends plugins.typedRequestInterfaces.ITypedRequest = any>(typedRequestArg: T) {
public async routeAndAddResponse<T extends plugins.typedRequestInterfaces.ITypedRequest = any>(typedRequestArg: T): Promise<T> {
if (!typedRequestArg?.correlation?.phase || typedRequestArg.correlation.phase === 'request') {
const typedHandler = this.getTypedHandlerForMethod(typedRequestArg.method);
@ -112,13 +107,8 @@ export class TypedRouter {
} else {
console.log('received weirdly shaped request');
console.log(typedRequestArg);
return {}
return null
}
return {
...typedRequestArg,
...{
method: 'nullPathFromResponse',
},
};
return typedRequestArg;
}
}