123456789101112131415161718192021222324252627282930313233343536373839 |
- 'use strict';
- var identity = require('../nodes/identity.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.name = (typeof schema === 'string' && schema) || 'core';
- this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};
- this.tags = tags.getTags(customTags, this.name, merge);
- this.toStringOptions = toStringDefaults ?? null;
- Object.defineProperty(this, identity.MAP, { value: map.map });
- Object.defineProperty(this, identity.SCALAR, { value: string.string });
- Object.defineProperty(this, identity.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;
|