@unchainedshop/plugins
Version:
Because of a Typescript issue with upstream "postfinancecheckout", the Postfinance plugin has been disabled from transpilation, import the source ts files from src and enable node_module tsc or copy over the src/payment/postfinance-checkout to your projec
35 lines (28 loc) • 1 kB
text/typescript
import { createClient } from '@redis/client';
import { setEmitAdapter, EmitAdapter } from '@unchainedshop/events';
const { REDIS_PORT = '6379', REDIS_HOST, REDIS_DB = '0' } = process.env;
const subscribedEvents = new Set();
const RedisEventEmitter = (): EmitAdapter => {
const redisPublisher = createClient({
url: `redis://${REDIS_HOST}:${REDIS_PORT}`,
database: parseInt(REDIS_DB, 10),
});
const redisSubscriber = createClient({
url: `redis://${REDIS_HOST}:${REDIS_PORT}`,
database: parseInt(REDIS_DB, 10),
});
return {
publish: (eventName, payload) => redisPublisher.publish(eventName, JSON.stringify(payload)),
subscribe: (eventName, callback) => {
if (!subscribedEvents.has(eventName)) {
redisSubscriber.subscribe(eventName, (payload) => {
callback(JSON.parse(payload));
});
subscribedEvents.add(eventName);
}
},
};
};
if (REDIS_HOST && REDIS_PORT && REDIS_DB) {
setEmitAdapter(RedisEventEmitter());
}