UNPKG

typescript-swagger

Version:

Generate Swagger files from a decorator library like typescript-rest or a @decorators/express.

60 lines 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInitializerValue = exports.hasOwnProperty = void 0; var ts = require("typescript"); function hasOwnProperty(obj, prop) { return obj.hasOwnProperty(prop); } exports.hasOwnProperty = hasOwnProperty; function getInitializerValue(initializer, typeChecker, type) { if (!initializer || !typeChecker) { return; } switch (initializer.kind) { case ts.SyntaxKind.ArrayLiteralExpression: var arrayLiteral = initializer; return arrayLiteral.elements.map(function (element) { return getInitializerValue(element, typeChecker); }); case ts.SyntaxKind.StringLiteral: return initializer.text; case ts.SyntaxKind.TrueKeyword: return true; case ts.SyntaxKind.FalseKeyword: return false; case ts.SyntaxKind.NumberKeyword: case ts.SyntaxKind.FirstLiteralToken: return Number(initializer.text); case ts.SyntaxKind.NewExpression: var newExpression = initializer; var ident = newExpression.expression; if (ident.text === 'Date') { var date = new Date(); if (newExpression.arguments) { var newArguments = newExpression.arguments.filter(function (args) { return args.kind !== undefined; }); var argsValue = newArguments.map(function (args) { return getInitializerValue(args, typeChecker); }); if (argsValue.length > 0) { date = new Date(argsValue); } } var dateString = date.toISOString(); if (type && type.typeName === 'date') { return dateString.split('T')[0]; } return dateString; } return; case ts.SyntaxKind.ObjectLiteralExpression: var objectLiteral = initializer; var nestedObject_1 = {}; objectLiteral.properties.forEach(function (p) { nestedObject_1[p.name.text] = getInitializerValue(p.initializer, typeChecker); }); return nestedObject_1; default: var symbol = typeChecker.getSymbolAtLocation(initializer); var extractedInitializer = symbol && symbol.valueDeclaration && hasInitializer(symbol.valueDeclaration) && symbol.valueDeclaration.initializer; return extractedInitializer ? getInitializerValue(extractedInitializer, typeChecker) : undefined; } } exports.getInitializerValue = getInitializerValue; var hasInitializer = function (node) { return node.hasOwnProperty('initializer'); }; //# sourceMappingURL=utils.js.map