UNPKG

5.76 kBSource Map (JSON)View Raw
1{"version":3,"file":"Event.js","sourceRoot":"","sources":["../src/Event.ts"],"names":[],"mappings":"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","sourcesContent":["import { channelManager } from './ChannelManager'\nimport { Channel } from \"amqplib/callback_api\"\n\nconst EXCHANGE_PREFIX = \"nimbus:event:\";\nconst EXCHANGE_ALL_EVENTS = \"nimbus:events\";\nconst EXCHANGE_EVENTS_BY_USER = \"nimbus:eventsByUser\";\nconst EXCHANGE_OPTIONS = {durable: true, autoDelete: false};\n\nexport interface EventConstructorOptions {\n exchange: string\n topic: string\n userId?: string\n}\n\nexport interface Message {\n exchange: string\n topic: string\n userId?: string\n content: any\n}\n\nexport class Event {\n exchange:string;\n topic:string;\n userId:string;\n\n constructor(options:EventConstructorOptions) {\n this.exchange = options.exchange;\n this.userId = options.userId;\n this.topic = options.topic ? options.topic : 'nimbusEvent';\n }\n\n send(object:any) {\n return this.sendString(this.prepareMessage(object));\n }\n\n get fullExchangeName():string {\n if (this.userId) return EXCHANGE_EVENTS_BY_USER;\n return EXCHANGE_PREFIX + this.exchange;\n }\n\n get routeKey(): string {\n return this.exchange + '.' + this.topic + (this.userId ? '.' + this.userId : '');\n }\n\n private assertExchange() {\n return channelManager.getChannel().then((channel) => {\n return new Promise((resolve, reject) => {\n channel.assertExchange(this.fullExchangeName, \"topic\", EXCHANGE_OPTIONS,\n (err) => err ? reject(err) : resolve(channel));\n })\n })\n }\n\n private assertExchangeForAllEvents() {\n return channelManager.getChannel().then((channel) => {\n if (this.userId) return channel;\n return new Promise((resolve, reject) => {\n channel.assertExchange(EXCHANGE_ALL_EVENTS, \"topic\", EXCHANGE_OPTIONS,\n (err) => err ? reject(err) : resolve(channel));\n })\n })\n }\n\n private bindToExchangeForAllEvents() {\n return channelManager.getChannel().then((channel) => {\n if (this.userId) return channel;\n return new Promise<Channel>((resolve, reject) => {\n channel.bindExchange(EXCHANGE_ALL_EVENTS, this.fullExchangeName, \"#\", {},\n (err) => err ? reject(err) : resolve(channel));\n })\n })\n }\n\n sendBuffer(buffer) {\n return channelManager.getChannel()\n .then(() => this.assertExchange())\n .then(() => this.assertExchangeForAllEvents())\n .then(() => this.bindToExchangeForAllEvents())\n .then((channel) => {\n channel.publish(this.fullExchangeName, this.routeKey, buffer, {\n contentType: \"text/json\",\n persistent: true\n });\n });\n }\n\n sendString(string:string) {\n return this.sendBuffer(new Buffer(string));\n }\n\n prepareMessage(object:any) {\n var message:Message = {\n exchange: this.exchange,\n topic: this.topic,\n content: object\n };\n\n if (this.userId) message.userId = this.userId;\n\n return JSON.stringify(message);\n }\n}"]}
\No newline at end of file