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.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							40 lines
						
					
					
						
							1.5 KiB
						
					
					
				| 'use strict'; | |
| 
 | |
| var Node = require('../nodes/Node.js'); | |
| var map = require('./common/map.js'); | |
| var seq = require('./common/seq.js'); | |
| var string = require('./common/string.js'); | |
| var tags = require('./tags.js'); | |
| 
 | |
| const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; | |
| class Schema { | |
|     constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) { | |
|         this.compat = Array.isArray(compat) | |
|             ? tags.getTags(compat, 'compat') | |
|             : compat | |
|                 ? tags.getTags(null, compat) | |
|                 : null; | |
|         this.merge = !!merge; | |
|         this.name = (typeof schema === 'string' && schema) || 'core'; | |
|         this.knownTags = resolveKnownTags ? tags.coreKnownTags : {}; | |
|         this.tags = tags.getTags(customTags, this.name); | |
|         this.toStringOptions = toStringDefaults ?? null; | |
|         Object.defineProperty(this, Node.MAP, { value: map.map }); | |
|         Object.defineProperty(this, Node.SCALAR, { value: string.string }); | |
|         Object.defineProperty(this, Node.SEQ, { value: seq.seq }); | |
|         // Used by createMap() | |
|         this.sortMapEntries = | |
|             typeof sortMapEntries === 'function' | |
|                 ? sortMapEntries | |
|                 : sortMapEntries === true | |
|                     ? sortMapEntriesByKey | |
|                     : null; | |
|     } | |
|     clone() { | |
|         const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this)); | |
|         copy.tags = this.tags.slice(); | |
|         return copy; | |
|     } | |
| } | |
| 
 | |
| exports.Schema = Schema;
 | |
| 
 |