UNPKG

mongo-oplog2

Version:
44 lines 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FilteredMongoOplog = void 0; const util_1 = require("util"); const eventemitter_1 = require("./eventemitter"); const util_2 = require("./util"); const debug = util_1.debuglog("mongo-oplog2:filter"); /** * Allows filtering of the oplog events. A typical usecase would be to have the * main `oplog` instance tailing an entire database but then create a filter for * a specifc collection to create triggers independently. */ class FilteredMongoOplog extends eventemitter_1.default { constructor(oplog, ns = "*") { super(); this.ignore = false; debug("initializing filter with re %s", ns); const re = util_2.regex(ns); this.oplog = oplog; this.onOp = (doc) => { const docNs = doc.namespace || doc.ns; if (this.ignore || !re.test(docNs)) { return; } debug("incoming data %j", doc); const opName = doc.operation || util_2.getOpName(doc.op); this.emit("op", doc); this.emit(opName, doc); }; oplog.on("op", this.onOp); } /** * Removes the filter from the listeners for the oplog instance and * removes all event listeners from the filter. */ destroy() { debug("removing filter bindings"); this.emit("destroy"); this.oplog.removeListener("op", this.onOp); this.removeAllListeners(); } } exports.FilteredMongoOplog = FilteredMongoOplog; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsaURBQTBDO0FBRTFDLGlDQUE4RTtBQUU5RSxNQUFNLEtBQUssR0FBRyxlQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQVU5Qzs7OztHQUlHO0FBQ0gsTUFBYSxrQkFDTyxTQUFRLHNCQUEyQztJQU1uRSxZQUFZLEtBQTJCLEVBQUUsS0FBYSxHQUFHO1FBQ3JELEtBQUssRUFBRSxDQUFDO1FBTFosV0FBTSxHQUFZLEtBQUssQ0FBQztRQU1wQixLQUFLLENBQUMsZ0NBQWdDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxFQUFFLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNyQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO2FBQUU7WUFDL0MsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sTUFBTSxHQUFpQyxHQUFHLENBQUMsU0FBUyxJQUFJLGdCQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQUNGLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNILEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFqQ0QsZ0RBaUNDIn0=