UNPKG

ts-randomizer

Version:

A tool to create random data by type parameters

69 lines 2.99 kB
"use strict"; 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