@sprucelabs/mercury-client
Version:
The simple way to interact with the Spruce Experience Platform
44 lines (43 loc) • 1.51 kB
JavaScript
import { eventContractUtil } from '@sprucelabs/spruce-event-utils';
import MercurySocketIoClient from './MercurySocketIoClient.js';
export default class MutableContractClient extends MercurySocketIoClient {
static mixinContract(contract) {
var _a;
this.inMemoryContract = eventContractUtil.unifyContracts([
(_a = this.inMemoryContract) !== null && _a !== void 0 ? _a : { eventSignatures: {} },
contract,
]);
}
mixinContract(contract) {
MutableContractClient.mixinContract(contract);
}
static reset() {
this.inMemoryContract = {
eventSignatures: {},
};
}
doesHandleEvent(eventName) {
try {
this.getEventSignatureByName(eventName);
return true;
}
catch (_a) {
return false;
}
}
getEventSignatureByName(eventName) {
var _a, _b;
try {
const sig = this.eventContract || MutableContractClient.inMemoryContract
? eventContractUtil.getSignatureByName((_a = this.eventContract) !== null && _a !== void 0 ? _a : { eventSignatures: {} }, eventName)
: {};
return sig;
}
catch (err) {
const inMemorySig = eventContractUtil.getSignatureByName((_b = MutableContractClient.inMemoryContract) !== null && _b !== void 0 ? _b : {
eventSignatures: {},
}, eventName);
return inMemorySig;
}
}
}