Using npm:
npm install banshi
Integration example:
import { BanshiResource, BanshiConnected } from "banshi";
class MockEndpoint<P = any, D = any> {
constructor(private onRequest: (payload: P) => Promise<D>) { }
async sendRequest(payload: P) {
const data = await this.onRequest(payload);
console.log(`Request payload: ${JSON.stringify(payload)}`); // Request payload: ["getBrand",[]]
console.log(`Request data: ${JSON.stringify(data)}`); // Request data: "Tesla"
return data;
}
}
class Car {
constructor(private brand: string) { }
getBrand() {
return this.brand;
}
}
const run = async () => {
const car = new Car("Tesla");
const resourceRemote = new BanshiResource<Car>(car);
const endpoint = new MockEndpoint(async (payload) => {
return await resourceRemote.$(payload);
});
const resourceConnected = new BanshiConnected<Car>(async (callstack) => {
return endpoint.sendRequest(callstack);
});
const result = await resourceConnected.$((resource) => {
return resource.getBrand();
});
console.log(`Result: ${result}`); // Result: Tesla
};
run();