"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReadConcern = exports.ReadConcernLevel = void 0; /** @public */ exports.ReadConcernLevel = Object.freeze({ local: 'local', majority: 'majority', linearizable: 'linearizable', available: 'available', snapshot: 'snapshot' }); /** * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties * of the data read from replica sets and replica set shards. * @public * * @see https://docs.mongodb.com/manual/reference/read-concern/index.html */ class ReadConcern { /** Constructs a ReadConcern from the read concern level.*/ constructor(level) { var _a; /** * A spec test exists that allows level to be any string. * "invalid readConcern with out stage" * @see ./test/spec/crud/v2/aggregate-out-readConcern.json * @see https://github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.rst#unknown-levels-and-additional-options-for-string-based-readconcerns */ this.level = (_a = exports.ReadConcernLevel[level]) !== null && _a !== void 0 ? _a : level; } /** * Construct a ReadConcern given an options object. * * @param options - The options object from which to extract the write concern. */ static fromOptions(options) { if (options == null) { return; } if (options.readConcern) { const { readConcern } = options; if (readConcern instanceof ReadConcern) { return readConcern; } else if (typeof readConcern === 'string') { return new ReadConcern(readConcern); } else if ('level' in readConcern && readConcern.level) { return new ReadConcern(readConcern.level); } } if (options.level) { return new ReadConcern(options.level); } } static get MAJORITY() { return exports.ReadConcernLevel.majority; } static get AVAILABLE() { return exports.ReadConcernLevel.available; } static get LINEARIZABLE() { return exports.ReadConcernLevel.linearizable; } static get SNAPSHOT() { return exports.ReadConcernLevel.snapshot; } toJSON() { return { level: this.level }; } } exports.ReadConcern = ReadConcern; //# sourceMappingURL=read_concern.js.map