UNPKG

@truffle/dashboard-message-bus-client

Version:
62 lines 2.79 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReceivedMessageLifecycle = exports.DashboardMessageBusSubscription = void 0; const errors_1 = require("../errors"); const debug_1 = __importDefault(require("debug")); const tiny_typed_emitter_1 = require("tiny-typed-emitter"); const debug = (0, debug_1.default)(`dashboard-message-bus-client:subscribe`); class DashboardMessageBusSubscription extends tiny_typed_emitter_1.TypedEmitter { constructor({ id, type }) { super(); this._ended = false; this._predicate = (message) => (id === undefined || message.id === id) && (type === undefined || message.type === type); } _evaluateMessage({ message, connection }) { if (this._predicate(message)) { const messageLifecycle = new ReceivedMessageLifecycle({ message, connection }); this.emit("message", messageLifecycle); } } _end() { this._ended = true; this.emit("end"); this.removeAllListeners(); } } exports.DashboardMessageBusSubscription = DashboardMessageBusSubscription; class ReceivedMessageLifecycle { constructor({ message, connection }) { this._responded = false; this.message = message; this._connection = connection; } respond({ payload }) { return __awaiter(this, void 0, void 0, function* () { if (this._responded) { throw new errors_1.AlreadyRespondedError({ serviceBusMessage: this.message }); } this._responded = true; const response = { id: this.message.id, payload }; debug("Responding to message %s of type '%s' with %o", this.message.id, this.message.type, response); yield this._connection.send(response); }); } } exports.ReceivedMessageLifecycle = ReceivedMessageLifecycle; //# sourceMappingURL=subscribe.js.map