ts-randomizer
Version:
A tool to create random data by type parameters
69 lines • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isArrayType = exports.getFirstTypeParameter = exports.getTypeArguments = exports.getPropertyNameBySyntaxKind = exports.getTypeNameByWrapperFunction = void 0;
const ts = require("typescript");
const fp_1 = require("lodash/fp");
const types_1 = require("../../../types");
const getTypeNameByWrapperFunction = (name) => {
switch (name) {
case 'Number':
return types_1.PropertyType.Number;
case 'String':
return types_1.PropertyType.String;
case 'Boolean':
return types_1.PropertyType.Boolean;
case 'Date':
return types_1.PropertyType.Date;
case 'Function':
return types_1.PropertyType.Function;
case 'Object':
return types_1.PropertyType.Object;
default:
return null;
}
};
exports.getTypeNameByWrapperFunction = getTypeNameByWrapperFunction;
const getPropertyNameBySyntaxKind = (propertySignature) => {
if (!propertySignature) {
return types_1.PropertyType.Unknown;
}
let kind = propertySignature.kind;
if (ts.isLiteralTypeNode(propertySignature)) {
kind = propertySignature.literal.kind;
}
if (ts.isPropertyDeclaration(propertySignature) ||
ts.isPropertySignature(propertySignature)) {
kind = propertySignature.type && propertySignature.type.kind;
}
switch (kind) {
case ts.SyntaxKind.StringKeyword:
return types_1.PropertyType.String;
case ts.SyntaxKind.NumberKeyword:
return types_1.PropertyType.Number;
case ts.SyntaxKind.BooleanKeyword:
return types_1.PropertyType.Boolean;
case ts.SyntaxKind.FunctionKeyword:
return types_1.PropertyType.Function;
case ts.SyntaxKind.ObjectKeyword:
return types_1.PropertyType.Object;
case ts.SyntaxKind.NullKeyword:
return types_1.PropertyType.Null;
case ts.SyntaxKind.UndefinedKeyword:
return types_1.PropertyType.Undefined;
case ts.SyntaxKind.ArrayType:
return ts.isPropertyDeclaration(propertySignature) ||
ts.isPropertySignature(propertySignature)
? (0, exports.getPropertyNameBySyntaxKind)(propertySignature.type.elementType)
: (0, exports.getPropertyNameBySyntaxKind)(propertySignature.elementType);
default:
return types_1.PropertyType.Unknown;
}
};
exports.getPropertyNameBySyntaxKind = getPropertyNameBySyntaxKind;
const getTypeArguments = (type) => type.typeArguments || [];
exports.getTypeArguments = getTypeArguments;
const getFirstTypeParameter = (item) => (0, fp_1.first)((0, exports.getTypeArguments)(item));
exports.getFirstTypeParameter = getFirstTypeParameter;
const isArrayType = (type) => type.symbol && type.symbol.name === 'Array';
exports.isArrayType = isArrayType;
//# sourceMappingURL=index.js.map