UNPKG

@jsonjoy.com/json-type

Version:

High-performance JSON Pointer implementation

51 lines 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OrType = void 0; const tslib_1 = require("tslib"); const printTree_1 = require("tree-dump/lib/printTree"); const schema = tslib_1.__importStar(require("../../schema")); const discriminator_1 = require("../discriminator"); const AbsType_1 = require("./AbsType"); class OrType extends AbsType_1.AbsType { constructor(types, options) { super({ ...schema.s.Or(), ...options, discriminator: options?.discriminator ?? discriminator_1.Discriminator.createExpression(types), }); this.types = types; } getSchema() { return { ...this.schema, types: this.types.map((type) => type.getSchema()), }; } getOptions() { const { kind: _, types: __, ...options } = this.schema; return options; } options(options) { Object.assign(this.schema, options); const discriminator = options.discriminator; if (discriminator) { if (discriminator === -1 || (discriminator.length === 2 && discriminator[0] === 'num' && discriminator[1] === -1)) { this.schema.discriminator = discriminator_1.Discriminator.createExpression(this.types); } } return this; } toString(tab = '') { return (super.toString(tab) + (0, printTree_1.printTree)(tab, [ (tab) => 'discriminator: ' + JSON.stringify(this.schema.discriminator, null, 2) .split('\n') .join('\n' + tab), ...this.types.map((type) => (tab) => type.toString(tab)), ])); } } exports.OrType = OrType; //# sourceMappingURL=OrType.js.map