@api.global/typedrequest
Version:
A TypeScript library for making typed requests towards APIs, including facilities for handling requests, routing, and virtual stream handling.
34 lines • 2.75 kB
JavaScript
import { TypedRouter } from './classes.typedrouter.js';
import * as plugins from './plugins.js';
/**
* a typed target defines a target for requests
*/
export class TypedTarget {
constructor(optionsArg) {
if (optionsArg.postMethodWithTypedRouter && !optionsArg.typedRouterRef) {
throw new Error('you have to specify a typedrouter when using postmethod with typedrouter');
}
this.options = optionsArg;
}
async post(payloadArg) {
let responseInterest;
// having a typedrouter allows us to work with async request response cycles.
if (this.options.typedRouterRef) {
responseInterest = await this.options.typedRouterRef.fireEventInterestMap.addInterest(payloadArg.correlation.id, payloadArg);
}
const postMethod = this.options.postMethod || this.options.postMethodWithTypedRouter;
const postMethodReturnValue = await postMethod(payloadArg);
let responseBody;
if (responseInterest) {
responseBody = (await responseInterest.interestFullfilled);
}
else if (postMethodReturnValue) {
responseBody = postMethodReturnValue;
}
else {
responseBody = payloadArg;
}
return responseBody;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50eXBlZHRhcmdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMudHlwZWR0YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBOEJ4Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQVksVUFBMEM7UUFDcEQsSUFBSSxVQUFVLENBQUMseUJBQXlCLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUM1QixDQUFDO0lBVU0sS0FBSyxDQUFDLElBQUksQ0FDZixVQUFhO1FBRWIsSUFBSSxnQkFHSCxDQUFDO1FBQ0YsNkVBQTZFO1FBQzdFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FDbkYsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQ3pCLFVBQVUsQ0FDWCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUM7UUFDckYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLFlBQWUsQ0FBQztRQUNwQixJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsWUFBWSxHQUFHLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBTSxDQUFDO1FBQ2xFLENBQUM7YUFBTSxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLHFCQUEwQixDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=