UNPKG

pg-trx-outbox

Version:

Transactional outbox of Postgres for Node.js with little Event Sourcing

23 lines (22 loc) 974 B
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupedAsyncAdapter = void 0; const p_queue_1 = __importDefault(require("p-queue")); const base_ts_1 = require("./base.js"); class GroupedAsyncAdapter extends base_ts_1.BaseAdapter { queues = new Map(); async send(messages) { const resp = []; for (const message of messages) { if (!this.queues.has(message.key)) { this.queues.set(message.key, new p_queue_1.default({ concurrency: 1 }).once('idle', () => this.queues.delete(message.key))); } resp.push(this.queues.get(message.key).add(() => this.baseHandleMessage(message), { priority: message.is_event ? 1 : 0 })); } return await Promise.all(resp); } } exports.GroupedAsyncAdapter = GroupedAsyncAdapter;