diff options
| author | ST-DDT <[email protected]> | 2024-09-10 00:56:58 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-09-09 22:56:58 +0000 |
| commit | acb8b5258fa645e499831fca43b319b0439c0baf (patch) | |
| tree | 249085a072923558c7cacc9a276c16a11697f617 /scripts/apidocs/processing/parameter.ts | |
| parent | f128d77194003192d27a3eb897f4a7ad02980ed0 (diff) | |
| download | faker-acb8b5258fa645e499831fca43b319b0439c0baf.tar.xz faker-acb8b5258fa645e499831fca43b319b0439c0baf.zip | |
infra: improve error messages for parameter properties (#3082)
Diffstat (limited to 'scripts/apidocs/processing/parameter.ts')
| -rw-r--r-- | scripts/apidocs/processing/parameter.ts | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/scripts/apidocs/processing/parameter.ts b/scripts/apidocs/processing/parameter.ts index 7a6b67da..05f2f1f3 100644 --- a/scripts/apidocs/processing/parameter.ts +++ b/scripts/apidocs/processing/parameter.ts @@ -1,5 +1,6 @@ import type { PropertySignature, + Symbol, Type, TypeParameterDeclaration, } from 'ts-morph'; @@ -174,30 +175,43 @@ function processComplexParameter( return type .getApparentProperties() .flatMap((parameter) => { - const declaration = exactlyOne( - parameter.getDeclarations(), - 'property declaration' - ) as PropertySignature; - const propertyType = declaration.getType(); - const jsdocs = getJsDocs(declaration); - const deprecated = getDeprecated(jsdocs); - - return [ - { - name: `${name}.${parameter.getName()}${getNameSuffix(propertyType)}`, - type: getTypeText(propertyType, { - abbreviate: false, - stripUndefined: true, - }), - default: getDefault(jsdocs), - description: - getDescription(jsdocs) + - (deprecated ? `\n\n**DEPRECATED:** ${deprecated}` : ''), - }, - ]; + try { + return processComplexParameterProperty(name, parameter); + } catch (error) { + throw newProcessingError({ + type: 'property', + name: `${name}.${parameter.getName()}`, + source: parameter.getDeclarations()[0], + cause: error, + }); + } }) .sort((a, b) => a.name.localeCompare(b.name)); } return []; } + +function processComplexParameterProperty(name: string, parameter: Symbol) { + const declaration = exactlyOne( + parameter.getDeclarations(), + 'property declaration' + ) as PropertySignature; + const propertyType = declaration.getType(); + const jsdocs = getJsDocs(declaration); + const deprecated = getDeprecated(jsdocs); + + return [ + { + name: `${name}.${parameter.getName()}${getNameSuffix(propertyType)}`, + type: getTypeText(propertyType, { + abbreviate: false, + stripUndefined: true, + }), + default: getDefault(jsdocs), + description: + getDescription(jsdocs) + + (deprecated ? `\n\n**DEPRECATED:** ${deprecated}` : ''), + }, + ]; +} |
