Skip to content

Commit 3d718d1

Browse files
committed
fix(core): format of optional type and getter/setter
1 parent 7032ebd commit 3d718d1

File tree

6 files changed

+48
-41
lines changed

6 files changed

+48
-41
lines changed

package-lock.json

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/typedoc-plugin-markdown/src/theme/context/partials/member.signatureParameters.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ParameterReflection, SomeType } from 'typedoc';
55
export function signatureParameters(
66
this: MarkdownThemeContext,
77
model: ParameterReflection[],
8+
options?: { forceExpandParameters?: boolean },
89
) {
910
const format = this.options.getValue('useCodeBlocks');
1011
const firstOptionalParamIndex = model.findIndex(
@@ -19,14 +20,15 @@ export function signatureParameters(
1920
paramsmd.push('...');
2021
}
2122
const paramType = this.partials.someType(param.type as SomeType);
22-
const showParamType = this.options.getValue('expandParameters');
23-
const optional = param.flags.isOptional ||
24-
(firstOptionalParamIndex !== -1 && i > firstOptionalParamIndex)
25-
? '?'
26-
: ''
27-
const paramItem = [
28-
`${backTicks(`${param.name}${optional}`)}`,
29-
];
23+
const showParamType =
24+
(options?.forceExpandParameters ?? false) ||
25+
this.options.getValue('expandParameters');
26+
const optional =
27+
param.flags.isOptional ||
28+
(firstOptionalParamIndex !== -1 && i > firstOptionalParamIndex)
29+
? '?'
30+
: '';
31+
const paramItem = [`${backTicks(`${param.name}${optional}`)}`];
3032
if (showParamType) {
3133
paramItem.push(paramType);
3234
}

packages/typedoc-plugin-markdown/src/theme/context/partials/type.reflection.declaration.ts

+13-7
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,21 @@ export function declarationType(
4141

4242
if (obj.getSignature) {
4343
name.push('get');
44-
name.push(backTicks(obj.name) + '\n ');
45-
}
46-
47-
if (obj.setSignature) {
44+
name.push(backTicks(obj.name) + '()');
45+
} else if (obj.setSignature) {
4846
name.push('set');
49-
name.push(backTicks(obj.name));
47+
const params = obj.setSignature.parameters
48+
? this.partials.signatureParameters(obj.setSignature.parameters, {
49+
forceExpandParameters: true,
50+
})
51+
: '()';
52+
name.push(backTicks(obj.name) + params);
53+
} else {
54+
const displayObjectName =
55+
obj.name + (obj.flags?.isOptional ? '?' : '');
56+
name.push(backTicks(displayObjectName));
5057
}
5158

52-
name.push(backTicks(obj.name));
53-
5459
const theType = this.helpers.getDeclarationType(obj) as SomeType;
5560

5661
const typeString = this.partials.someType(theType, options);
@@ -67,6 +72,7 @@ export function declarationType(
6772
);
6873
}
6974
}
75+
7076
md.push(`${shouldFormat ? '' : ' '}\\}`);
7177
return md.join(shouldFormat ? '\n' : '');
7278
}

packages/typedoc-plugin-markdown/src/theme/context/resources.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,11 @@ There is no association list partial for properties as these are handled as a st
160160
hideTitle?: boolean | undefined;
161161
},
162162
) => partials.signature.apply(context, [model, options]) as string,
163-
signatureParameters: (model: ParameterReflection[]) =>
164-
partials.signatureParameters.apply(context, [model]) as string,
163+
signatureParameters: (
164+
model: ParameterReflection[],
165+
options?: { forceExpandParameters?: boolean | undefined } | undefined,
166+
) =>
167+
partials.signatureParameters.apply(context, [model, options]) as string,
165168
signatureReturns: (
166169
model: SignatureReflection,
167170
options: { headingLevel: number },

packages/typedoc-plugin-markdown/test/specs/__snapshots__/objects-and-params.spec.ts.snap

+12-16
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ Comments for propWithFunction
151151
152152
### propWithProps
153153
154-
> **propWithProps**: \\{ \`callbacks\`: \`Partial\`\\<[\`CallbacksOptions\`](../classes/CallbacksOptions.md)\\<[\`DisposableClass\`](../classes/DisposableClass.md), [\`ClassWithModifiers\`](../classes/ClassWithModifiers.md)\\>\\>; \`nestedPropA\`: \`string\`; \`nestedPropB\`: \`boolean\`; \`nestedPropC\`: \\{ \`nestedPropCA\`: \`string\`; \\}; \`nestedPropD\`: () => \`boolean\`; \\}
154+
> **propWithProps**: \\{ \`callbacks?\`: \`Partial\`\\<[\`CallbacksOptions\`](../classes/CallbacksOptions.md)\\<[\`DisposableClass\`](../classes/DisposableClass.md), [\`ClassWithModifiers\`](../classes/ClassWithModifiers.md)\\>\\>; \`nestedPropA\`: \`string\`; \`nestedPropB\`: \`boolean\`; \`nestedPropC\`: \\{ \`nestedPropCA\`: \`string\`; \\}; \`nestedPropD\`: () => \`boolean\`; \\}
155155
156156
Comments for propWithProps
157157
@@ -221,7 +221,7 @@ Comments for BasicInterface
221221
| <a id="propreturningsignaturedeclaration"></a> \`propReturningSignatureDeclaration?\` | () => \`string\` \\| \`number\` \\| \`boolean\` | Comments for propReturningSignatureDeclaration |
222222
| <a id="propreturningsignaturedeclarations"></a> \`propReturningSignatureDeclarations\` | () => \`any\` & (\`paramsA\`: \`true\` \\| \`any\`[], \`paramsB?\`: \`any\`) => \`any\` & (\`paramsC\`: \`any\`) => \`any\` | Comments for propReturningSignatureDeclarations |
223223
| <a id="propwithfunction"></a> \`propWithFunction\` | (\`options\`: \\{ \`a\`: \`boolean\`; \`b\`: \`string\`; \\}) => \`boolean\` | Comments for propWithFunction |
224-
| <a id="propwithprops"></a> \`propWithProps\` | \\{ \`callbacks\`: \`Partial\`\\<[\`CallbacksOptions\`](../classes/CallbacksOptions.md)\\<[\`DisposableClass\`](../classes/DisposableClass.md), [\`ClassWithModifiers\`](../classes/ClassWithModifiers.md)\\>\\>; \`nestedPropA\`: \`string\`; \`nestedPropB\`: \`boolean\`; \`nestedPropC\`: \\{ \`nestedPropCA\`: \`string\`; \\}; \`nestedPropD\`: () => \`boolean\`; \\} | Comments for propWithProps |
224+
| <a id="propwithprops"></a> \`propWithProps\` | \\{ \`callbacks?\`: \`Partial\`\\<[\`CallbacksOptions\`](../classes/CallbacksOptions.md)\\<[\`DisposableClass\`](../classes/DisposableClass.md), [\`ClassWithModifiers\`](../classes/ClassWithModifiers.md)\\>\\>; \`nestedPropA\`: \`string\`; \`nestedPropB\`: \`boolean\`; \`nestedPropC\`: \\{ \`nestedPropCA\`: \`string\`; \\}; \`nestedPropD\`: () => \`boolean\`; \\} | Comments for propWithProps |
225225
| \`propWithProps.callbacks?\` | \`Partial\`\\<[\`CallbacksOptions\`](../classes/CallbacksOptions.md)\\<[\`DisposableClass\`](../classes/DisposableClass.md), [\`ClassWithModifiers\`](../classes/ClassWithModifiers.md)\\>\\> | Comments for callbacks |
226226
| \`propWithProps.nestedPropA\` | \`string\` | Comments for nestedPropA |
227227
| \`propWithProps.nestedPropB\` | \`boolean\` | Comments for nestedPropB |
@@ -362,7 +362,7 @@ y: number = 2;
362362
exports[`Objects And Params should compile function with nested parameters: (Output File Strategy "members") (Option Group "1") 1`] = `
363363
"# Function: functionWithNestedParameters()
364364
365-
> **functionWithNestedParameters**(\`params\`: \\{ \`name\`: \`string\`; \`nestedObj\`: \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\}; \`parent\`: \`number\`; \\}, \`context\`: \`any\`, \`somethingElse?\`: \`string\`): \`boolean\`
365+
> **functionWithNestedParameters**(\`params\`: \\{ \`name\`: \`string\`; \`nestedObj\`: \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\}; \`parent?\`: \`number\`; \\}, \`context\`: \`any\`, \`somethingElse?\`: \`string\`): \`boolean\`
366366
367367
Some nested params.
368368
@@ -434,7 +434,7 @@ function functionWithNestedParameters(
434434
};
435435
value: number;
436436
};
437-
parent: number;
437+
parent?: number;
438438
},
439439
context: any,
440440
somethingElse?: string): boolean;
@@ -446,7 +446,7 @@ Some nested params.
446446
447447
| Parameter | Type | Description |
448448
| :------ | :------ | :------ |
449-
| \`params\` | \\{ \`name\`: \`string\`; \`nestedObj\`: \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\}; \`parent\`: \`number\`; \\} | The parameters passed to the method. |
449+
| \`params\` | \\{ \`name\`: \`string\`; \`nestedObj\`: \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\}; \`parent?\`: \`number\`; \\} | The parameters passed to the method. |
450450
| \`params.name\` | \`string\` | The name of the new group. |
451451
| \`params.nestedObj\` | \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\} | A nested object. |
452452
| \`params.nestedObj.name?\` | \`string\` | - |
@@ -502,9 +502,7 @@ bar: number;
502502
exports[`Objects And Params should compile literal type: (Output File Strategy "members") (Option Group "1") 1`] = `
503503
"# Type Alias: LiteralType
504504
505-
> **LiteralType** = \\{ \`someFunctionWithArrow\`: () => \`string\`; \`x\`: \`string\`; \`y\`: \\{ \`x\`: \`string\`; \`y\`: \`boolean\` \\| \`string\`; \`z\`: (\`x\`: \`string\`) => \`string\`; \\}; \`z\`: (\`x\`: \`string\`) => \`string\`; get \`accessorA\`
506-
set \`accessorA\` \`accessorA\`: [\`Promise\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\\<\`string\`\\>; get \`accessorB\`
507-
set \`accessorB\` \`accessorB\`: \`string\`; \`someFunction\`: [\`Promise\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\\<\`any\`\\>; \\}
505+
> **LiteralType** = \\{ \`someFunctionWithArrow\`: () => \`string\`; \`x?\`: \`string\`; \`y\`: \\{ \`x\`: \`string\`; \`y?\`: \`boolean\` \\| \`string\`; \`z\`: (\`x\`: \`string\`) => \`string\`; \\}; \`z\`: (\`x\`: \`string\`) => \`string\`; get \`accessorA\`(): [\`Promise\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\\<\`string\`\\>; get \`accessorB\`(): \`string\`; \`someFunction\`: [\`Promise\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\\<\`any\`\\>; \\}
508506
509507
Comments for LiteralType
510508
@@ -532,7 +530,7 @@ comment for x
532530
533531
### y
534532
535-
> **y**: \\{ \`x\`: \`string\`; \`y\`: \`boolean\` \\| \`string\`; \`z\`: (\`x\`: \`string\`) => \`string\`; \\}
533+
> **y**: \\{ \`x\`: \`string\`; \`y?\`: \`boolean\` \\| \`string\`; \`z\`: (\`x\`: \`string\`) => \`string\`; \\}
536534
537535
comment for y
538536
@@ -662,17 +660,15 @@ exports[`Objects And Params should compile literal type: (Output File Strategy "
662660
\`\`\`ts
663661
type LiteralType = {
664662
someFunctionWithArrow: () => string;
665-
x: string;
663+
x?: string;
666664
y: {
667665
x: string;
668-
y: boolean | string;
666+
y?: boolean | string;
669667
z: (x: string) => string;
670668
};
671669
z: (x: string) => string;
672-
get accessorA
673-
set accessorA accessorA: Promise<string>;
674-
get accessorB
675-
set accessorB accessorB: string;
670+
get accessorA(): Promise<string>;
671+
get accessorB(): string;
676672
someFunction: Promise<any>;
677673
};
678674
\`\`\`
@@ -710,7 +706,7 @@ comment for x
710706
\`\`\`ts
711707
y: {
712708
x: string;
713-
y: boolean | string;
709+
y?: boolean | string;
714710
z: (x: string) => string;
715711
};
716712
\`\`\`

packages/typedoc-plugin-markdown/test/specs/__snapshots__/reflection.function.spec.ts.snap

+2-2
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,7 @@ Defined in: [functions.ts:1](http://source-url)
11011101
11021102
| Parameter | Type | Description |
11031103
| :------ | :------ | :------ |
1104-
| \`__namedParameters\` | \\{ \`bar\`: \`number\`; \`foo\`: \`number\`; \\} | various options |
1104+
| \`__namedParameters\` | \\{ \`bar?\`: \`number\`; \`foo?\`: \`number\`; \\} | various options |
11051105
| \`__namedParameters.bar?\` | \`number\` | - |
11061106
| \`__namedParameters.foo?\` | \`number\` | - |
11071107
| \`anotherParam\` | \`string\` | Another param comment |
@@ -1193,7 +1193,7 @@ Some nested params.
11931193
11941194
| Parameter | Type | Description |
11951195
| :------ | :------ | :------ |
1196-
| \`params\` | \\{ \`name\`: \`string\`; \`nestedObj\`: \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\}; \`parent\`: \`number\`; \\} | The parameters passed to the method. |
1196+
| \`params\` | \\{ \`name\`: \`string\`; \`nestedObj\`: \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\}; \`parent?\`: \`number\`; \\} | The parameters passed to the method. |
11971197
| \`params.name\` | \`string\` | The name of the new group. |
11981198
| \`params.nestedObj\` | \\{ \`name\`: \`string\`; \`obj\`: \\{ \`name\`: () => \`void\`; \\}; \`value\`: \`number\`; \\} | A nested object. |
11991199
| \`params.nestedObj.name?\` | \`string\` | - |

0 commit comments

Comments
 (0)