flow-immutable-models
Version:
Generates model classes from Flow types using Immutable.js
27 lines (21 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isModelTypeReference;
var _withoutModelTypeSuffix = require('./withoutModelTypeSuffix');
var _flowTypes = require('./flowTypes');
function isArrayOfModelType(typeAlias) {
return (0, _flowTypes.isArray)(typeAlias) && Boolean(typeAlias.typeParameters) && typeAlias.typeParameters.params[0].type === 'GenericTypeAnnotation' && (0, _withoutModelTypeSuffix.endsWithModelType)(typeAlias.typeParameters.params[0].id.name);
}
function isObjectMapOfModelType(typeAlias) {
if ((0, _flowTypes.isObjectMap)(typeAlias)) {
var propIndexer = typeAlias.indexers[0];
return (0, _withoutModelTypeSuffix.endsWithModelType)(propIndexer && propIndexer.value.id && propIndexer.value.id.name);
}
return false;
}
function isModelTypeReference(typeAlias) {
var alias = typeAlias.type === 'NullableTypeAnnotation' ? typeAlias.typeAnnotation : typeAlias;
return (0, _withoutModelTypeSuffix.endsWithModelType)(alias.id && alias.id.name) || isArrayOfModelType(alias) || isObjectMapOfModelType(alias);
}