UNPKG

@ng-doc/builder

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

182 lines 5.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.constructorPresentation = constructorPresentation; exports.accessorPresentation = accessorPresentation; exports.methodPresentation = methodPresentation; exports.callSignaturePresentation = callSignaturePresentation; exports.functionPresentation = functionPresentation; exports.typeAliasPresentation = typeAliasPresentation; exports.variablePresentation = variablePresentation; const core_1 = require("@ng-doc/core"); const ts_morph_1 = require("ts-morph"); const format_code_1 = require("./format-code"); const typescript_1 = require("./typescript"); /** * * @param constructor */ function constructorPresentation(constructor) { const parameters = constructor.getParameters().map(parameterPresentation).join(', \n '); const presentation = [ scopePresentation(constructor), `constructor(\n ${parameters}\n):`, (0, typescript_1.displayReturnType)(constructor), ] .filter(core_1.isPresent) .join(' ') + ';'; return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param accessor */ function accessorPresentation(accessor) { const parameters = accessor.getParameters().map(parameterPresentation).join(', '); const prefix = ts_morph_1.Node.isGetAccessorDeclaration(accessor) ? 'get' : 'set'; const header = ts_morph_1.Node.isGetAccessorDeclaration(accessor) ? `${accessor.getName()}():` : `${accessor.getName()}(${parameters})`; const returnType = ts_morph_1.Node.isGetAccessorDeclaration(accessor) ? (0, typescript_1.displayReturnType)(accessor) : ''; const presentation = [staticPresentation(accessor), scopePresentation(accessor), prefix, header, returnType] .filter(core_1.isPresent) .join(' ') + ';'; return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param method */ function methodPresentation(method) { const parameters = method.getParameters().map(parameterPresentation).join(', '); const presentation = [ memberModifiers(method), staticPresentation(method), scopePresentation(method), `${method.getName()}(${parameters}):`, `${(0, typescript_1.displayReturnType)(method)};`, ] .filter(core_1.isPresent) .join(' '); return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param callSignature */ function callSignaturePresentation(callSignature) { const parameters = callSignature.getParameters().map(parameterPresentation).join(', '); const typeParameters = typeParametersPresentation(callSignature.getTypeParameters()); const presentation = [ `${typeParameters ? `<${typeParameters}>` : ''}(${parameters}):`, `${(0, typescript_1.displayReturnType)(callSignature)};`, ] .filter(core_1.isPresent) .join(' '); return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param fnc */ function functionPresentation(fnc) { const parameters = fnc.getParameters().map(parameterPresentation).join(', '); const presentation = [ 'function', `${fnc.getName()}(${parameters}):`, `${(0, typescript_1.displayReturnType)(fnc)};`, ] .filter(core_1.isPresent) .join(' '); return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param typeAlias */ function typeAliasPresentation(typeAlias) { const presentation = `type ${typeAlias.getName()} = ${(0, typescript_1.displayType)(typeAlias)};`; return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param variable */ function variablePresentation(variable) { const presentation = [ variable.getVariableStatement()?.getDeclarationKind() ?? 'const', `${variable.getName()}:`, `${(0, typescript_1.displayType)(variable)};`, ] .filter(core_1.isPresent) .join(' '); return (0, format_code_1.formatCode)(presentation, 'TypeScript'); } /** * * @param parameter */ function parameterPresentation(parameter) { return [ decoratorsPresentation(parameter), scopePresentation(parameter), modPresentation(parameter), parameter.getName() + (parameter.hasQuestionToken() ? '?' : '') + ':', (0, typescript_1.displayType)(parameter), parameter.getInitializer() ? `= ${parameter.getInitializer()?.getText() ?? ''}` : '', ] .filter(core_1.isPresent) .join(' '); } /** * * @param node */ function scopePresentation(node) { return (node.getScope && node.getScope()?.replace(ts_morph_1.Scope.Public, '')) ?? ''; } /** * * @param node */ function staticPresentation(node) { return ts_morph_1.Node.isStaticable(node) && node.isStatic() ? 'static' : ''; } /** * * @param member */ function memberModifiers(member) { return [ (ts_morph_1.Node.isAbstractable(member) && member.isAbstract() && 'abstract') || '', (ts_morph_1.Node.isAsyncable(member) && member.isAsync() && 'async') || '', ] .filter(core_1.isPresent) .join(' '); } /** * * @param node */ function modPresentation(node) { return (node.isReadonly && node.isReadonly() && 'readonly') || ''; } /** * * @param node */ function decoratorsPresentation(node) { return node .getDecorators() .map((d) => `@${d.getName()}()`) .join(' '); } /** * * @param typeParameters */ function typeParametersPresentation(typeParameters) { return typeParameters.map((tp) => tp.getText()).join(', '); } //# sourceMappingURL=presentation.js.map