UNPKG

mongo-oplog2

Version:
96 lines 5.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.timeout = exports.regex = exports.prettify = exports.omit = exports.getTimestamp = exports.getOpName = exports.opMap = void 0; const util_1 = require("util"); const mongodb_1 = require("mongodb"); util_1.debuglog("mongo-oplog2:utils"); exports.opMap = Object.freeze({ i: "insert", insert: "i", d: "delete", delete: "d", n: "noop", noop: "n", u: "update", update: "i", }); /** * Converts from the operation code from the native MongoDB versions to * friendlier names. Conversions are: * i: insert * d: delete * n: noop * u: update * @param op MongoDB operation code */ function getOpName(op) { return exports.opMap[op] || op; } exports.getOpName = getOpName; /** * Converts a number into a MongoDB `Timestamp` * @param ts timestamp to convert */ function getTimestamp(ts) { if (typeof ts === 'string') { return mongodb_1.Timestamp.fromString(ts); } else if (typeof ts === 'number' || !ts) { return new mongodb_1.Timestamp(0, ts ? ts : (Date.now() / 1000)); } return ts; } exports.getTimestamp = getTimestamp; /** * Returns a new object without any of the specified keys. * @param obj Initial object * @param keys array of keys to be removed from the object */ function omit(obj, keys) { const omitted = Object.assign({}, obj); for (const key of keys) { delete omitted[key]; } return omitted; } exports.omit = omit; /** * Converts from `OplogDoc` format to `PrettyOplogDoc` format. * @param oplogDoc a document in MongoDB OplogDoc format. */ function prettify(oplogDoc) { const aEvents = exports.opMap; const doc = { namespace: oplogDoc.ns, operation: getOpName(oplogDoc.op), operationId: oplogDoc.h, timestamp: new Date(oplogDoc.ts.high_ * 1000), ts: oplogDoc.ts, }; const targetId = (oplogDoc.o2 && oplogDoc.o2._id ? oplogDoc.o2._id : (oplogDoc.o && oplogDoc.o._id ? oplogDoc.o._id : null)); if (targetId) { doc.targetId = targetId; } if (oplogDoc.o2) { doc.criteria = oplogDoc.o2; } if (oplogDoc.o) { doc.data = oplogDoc.o; } return doc; } exports.prettify = prettify; /** * Returns a `RegExp` used for filtering events. * @param pattern regex pattern */ function regex(pattern) { pattern = pattern.replace(/[*]/g, "(.*?)"); return new RegExp(`^${pattern}$`, "i"); } exports.regex = regex; /** * Returns a promise that will resolve after a specified period of time. * @param ms length of time before promise should resolve. */ function timeout(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } exports.timeout = timeout; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFnQztBQUNoQyxxQ0FBaUQ7QUFFakQsZUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFbEIsUUFBQSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBUTtJQUN0QyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHO0lBQ3hCLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUc7SUFDeEIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRztJQUNwQixDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHO0NBQzNCLENBQUMsQ0FBQztBQUdIOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLEVBQVU7SUFDaEMsT0FBYSxhQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFGRCw4QkFFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxFQUFnQztJQUN6RCxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtRQUN4QixPQUFPLG1CQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ25DO1NBQU0sSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUU7UUFDdEMsT0FBTyxJQUFJLG1CQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzFEO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDO0FBUEQsb0NBT0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLEdBQVEsRUFBRSxJQUFjO0lBQ3pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3BCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQU5ELG9CQU1DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLFFBQWtCO0lBQ3ZDLE1BQU0sT0FBTyxHQUFRLGFBQUssQ0FBQztJQUMzQixNQUFNLEdBQUcsR0FBd0I7UUFDN0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1FBQ3RCLFNBQVMsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkIsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFPLFFBQVEsQ0FBQyxFQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwRCxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7S0FDbEIsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQSxDQUFDLENBQUEsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFBLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFDLENBQUEsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckgsSUFBSSxRQUFRLEVBQUU7UUFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztLQUFFO0lBQzFDLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRTtRQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztLQUFFO0lBQ2hELElBQUksUUFBUSxDQUFDLENBQUMsRUFBRTtRQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztLQUFFO0lBQzFDLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQWRELDRCQWNDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLE9BQWU7SUFDakMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBSEQsc0JBR0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixPQUFPLENBQUMsRUFBVTtJQUM5QixPQUFPLElBQUksT0FBTyxDQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDaEMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FDMUIsQ0FBQztBQUNOLENBQUM7QUFKRCwwQkFJQyJ9