You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							2.4 KiB
						
					
					
				| "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) {
 | |
|         /**
 | |
|          * 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 = exports.ReadConcernLevel[level] ?? 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);
 | |
|         }
 | |
|         return;
 | |
|     }
 | |
|     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
 |