aboutsummaryrefslogtreecommitdiff
path: root/scripts/apidocs/processing/parameter.ts
diff options
context:
space:
mode:
authorST-DDT <[email protected]>2024-09-10 00:56:58 +0200
committerGitHub <[email protected]>2024-09-09 22:56:58 +0000
commitacb8b5258fa645e499831fca43b319b0439c0baf (patch)
tree249085a072923558c7cacc9a276c16a11697f617 /scripts/apidocs/processing/parameter.ts
parentf128d77194003192d27a3eb897f4a7ad02980ed0 (diff)
downloadfaker-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.ts56
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}` : ''),
+ },
+ ];
+}