resolve-local-event-broker
Version:
The reSolve framework's event broker for applications on a local machine.
69 lines (57 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _resolveLocalRpc = require("resolve-local-rpc");
const getProvider = (host, key) => {
switch (key) {
case 'BeginXATransaction':
case 'CommitXATransaction':
case 'RollbackXATransaction':
case 'Drop':
case 'SendEvents':
return host.eventListener;
case 'LoadEvents':
case 'SaveEvent':
return host.eventStore;
default:
{
throw new Error(`Invalid key ${key}`);
}
}
};
const createAndInitConsumer = async config => {
const {
baseResolve,
initResolve,
disposeResolve,
address
} = config;
const consumerMethod = async (key, ...args) => {
const currentResolve = Object.create(baseResolve);
try {
await initResolve(currentResolve);
const provider = getProvider(currentResolve, key);
const result = await provider[key](...args);
return result;
} finally {
await disposeResolve(currentResolve);
}
};
const consumer = new Proxy({}, {
get(_, key) {
return consumerMethod.bind(null, key);
},
set() {
throw new Error(`Consumer API is immutable`);
}
});
return await (0, _resolveLocalRpc.createServer)({
hostObject: consumer,
address
});
};
var _default = createAndInitConsumer;
exports.default = _default;
//# sourceMappingURL=index.js.map