UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

63 lines (62 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSubType = getSubType; exports.getUnionSubTypes = getUnionSubTypes; exports.getPropertyType = getPropertyType; exports.getDefaultValue = getDefaultValue; exports.getEnumerationValues = getEnumerationValues; exports.resolveLateType = resolveLateType; const mobx_state_tree_1 = require("mobx-state-tree"); function getSubType(type) { let t; if ((0, mobx_state_tree_1.isOptionalType)(type)) { t = type._subtype || type.type; } else if ((0, mobx_state_tree_1.isArrayType)(type) || (0, mobx_state_tree_1.isMapType)(type)) { t = type._subtype || type._subType || type.subType; } else if (typeof type.getSubType === 'function') { return type.getSubType(); } else { throw new TypeError('unsupported mst type'); } if (!t) { throw new Error('failed to get subtype'); } return t; } function getUnionSubTypes(unionType) { if (!(0, mobx_state_tree_1.isUnionType)(unionType)) { throw new TypeError('not an MST union type'); } const t = unionType._types || unionType.types || getSubType(unionType)._types || getSubType(unionType).types; if (!t) { throw new Error('failed to extract subtypes from mst union'); } return t; } function getPropertyType(type, propertyName) { return type.properties[propertyName]; } function getDefaultValue(type) { if (!(0, mobx_state_tree_1.isOptionalType)(type)) { throw new TypeError('type must be an optional type'); } return type._defaultValue || type.defaultValue; } function getEnumerationValues(type) { const subtypes = getUnionSubTypes(type); return subtypes.map(t => t.value); } function resolveLateType(maybeLate) { if (!(0, mobx_state_tree_1.isUnionType)(maybeLate) && !(0, mobx_state_tree_1.isArrayType)(maybeLate) && (0, mobx_state_tree_1.isLateType)(maybeLate)) { return maybeLate.getSubType(); } return maybeLate; }