Skip to content

Commit b3346f4

Browse files
committed
feat(docgen): update typedoc
1 parent 2791c86 commit b3346f4

21 files changed

+663
-486
lines changed

Diff for: packages/actions/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"tslib": "^2.4.0"
4848
},
4949
"devDependencies": {
50-
"@types/node": "^16.11.38",
50+
"@types/node": "^16.11.39",
5151
"@typescript-eslint/eslint-plugin": "^5.27.1",
5252
"@typescript-eslint/parser": "^5.27.1",
5353
"eslint": "^8.17.0",

Diff for: packages/builders/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"dependencies": {
5555
"@sapphire/shapeshift": "^3.1.0",
5656
"@sindresorhus/is": "^4.6.0",
57-
"discord-api-types": "^0.33.4",
57+
"discord-api-types": "^0.33.5",
5858
"fast-deep-equal": "^3.1.3",
5959
"ts-mixer": "^6.0.1",
6060
"tslib": "^2.4.0"
@@ -63,7 +63,7 @@
6363
"@discordjs/docgen": "workspace:^",
6464
"@discordjs/scripts": "workspace:^",
6565
"@favware/cliff-jumper": "^1.8.3",
66-
"@types/node": "^16.11.38",
66+
"@types/node": "^16.11.39",
6767
"@typescript-eslint/eslint-plugin": "^5.27.1",
6868
"@typescript-eslint/parser": "^5.27.1",
6969
"eslint": "^8.17.0",

Diff for: packages/collection/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"@discordjs/docgen": "workspace:^",
5252
"@discordjs/scripts": "workspace:^",
5353
"@favware/cliff-jumper": "^1.8.3",
54-
"@types/node": "^16.11.38",
54+
"@types/node": "^16.11.39",
5555
"@typescript-eslint/eslint-plugin": "^5.27.1",
5656
"@typescript-eslint/parser": "^5.27.1",
5757
"eslint": "^8.17.0",

Diff for: packages/discord.js/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,25 @@
5353
"@discordjs/rest": "workspace:^",
5454
"@sapphire/snowflake": "^3.2.2",
5555
"@types/ws": "^8.5.3",
56-
"discord-api-types": "^0.33.4",
56+
"discord-api-types": "^0.33.5",
5757
"fast-deep-equal": "^3.1.3",
5858
"lodash.snakecase": "^4.1.1",
5959
"tslib": "^2.4.0",
6060
"undici": "^5.4.0",
61-
"ws": "^8.7.0"
61+
"ws": "^8.8.0"
6262
},
6363
"devDependencies": {
6464
"@discordjs/docgen": "workspace:^",
6565
"@favware/cliff-jumper": "^1.8.3",
66-
"@types/node": "^16.11.38",
66+
"@types/node": "^16.11.39",
6767
"dtslint": "^4.2.1",
6868
"eslint": "^8.17.0",
6969
"eslint-config-prettier": "^8.5.0",
7070
"eslint-plugin-import": "^2.26.0",
7171
"eslint-plugin-prettier": "^4.0.0",
7272
"husky": "^8.0.1",
7373
"is-ci": "^3.0.1",
74-
"jest": "^28.1.0",
74+
"jest": "^28.1.1",
7575
"prettier": "^2.6.2",
7676
"tsd": "^0.20.0",
7777
"tslint": "^6.1.3",

Diff for: packages/docgen/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@
5353
"commander": "^9.3.0",
5454
"jsdoc-to-markdown": "^7.1.1",
5555
"tslib": "^2.4.0",
56-
"typedoc": "^0.22.17"
56+
"typedoc": "^0.23.0-beta.4"
5757
},
5858
"devDependencies": {
5959
"@favware/cliff-jumper": "^1.8.3",
6060
"@types/jsdoc-to-markdown": "^7.0.3",
61-
"@types/node": "^16.11.38",
61+
"@types/node": "^16.11.39",
6262
"@typescript-eslint/eslint-plugin": "^5.27.1",
6363
"@typescript-eslint/parser": "^5.27.1",
6464
"eslint": "^8.17.0",

Diff for: packages/docgen/src/documentation.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export class Documentation {
121121
item = new DocumentedMember(member, this.config);
122122
break;
123123
}
124-
case 'event': {
124+
case 'Event': {
125125
item = new DocumentedEvent(member, this.config);
126126
break;
127127
}

Diff for: packages/docgen/src/types/class.ts

+22-9
Original file line numberDiff line numberDiff line change
@@ -80,32 +80,45 @@ export class DocumentedClass extends DocumentedItem<Class | DeclarationReflectio
8080
public override serializer() {
8181
if (this.config.typescript) {
8282
const data = this.data as DeclarationReflection;
83+
const signature = (data.signatures ?? [])[0] ?? data;
8384
let meta;
8485

8586
const sources = data.sources?.[0];
8687
if (sources) {
8788
meta = new DocumentedItemMeta(sources, this.config).serialize();
8889
}
8990

91+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
92+
const see = signature.comment?.blockTags?.filter((t) => t.tag === '@see').length
93+
? signature.comment.blockTags
94+
.filter((t) => t.tag === '@see')
95+
.map((t) => t.content.find((c) => c.kind === 'text')?.text.trim())
96+
: undefined;
97+
9098
return {
9199
// @ts-expect-error
92100
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
93-
name: data.name === 'default' ? parse(meta?.file ?? 'default').name : data.name,
94-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
95-
description: data.comment?.shortText?.trim(),
96-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
97-
see: data.comment?.tags?.filter((t) => t.tagName === 'see').map((t) => t.text.trim()),
101+
name: signature.name === 'default' ? parse(meta?.file ?? 'default').name : signature.name,
102+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
103+
description: signature.comment?.summary.reduce((prev, curr) => (prev += curr.text), '').trim() || undefined,
104+
see,
98105
extends: this.extends?.serialize(),
99106
implements: this.implements?.serialize(),
100107
access:
108+
data.flags.isPrivate ||
101109
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
102-
data.flags.isPrivate || data.comment?.tags?.some((t) => t.tagName === 'private' || t.tagName === 'internal')
110+
signature.comment?.blockTags?.some((t) => t.tag === '@private' || t.tag === '@internal')
103111
? 'private'
104112
: undefined,
113+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing, @typescript-eslint/no-unnecessary-condition
114+
abstract: signature.comment?.blockTags?.some((t) => t.tag === '@abstract') || undefined,
105115
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
106-
abstract: data.comment?.tags?.some((t) => t.tagName === 'abstract'),
107-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
108-
deprecated: data.comment?.tags?.some((t) => t.tagName === 'deprecated'),
116+
deprecated: signature.comment?.blockTags?.some((t) => t.tag === '@deprecated')
117+
? signature.comment.blockTags
118+
.find((t) => t.tag === '@deprecated')
119+
?.content.reduce((prev, curr) => (prev += curr.text), '')
120+
.trim() ?? true
121+
: undefined,
109122
construct: this.construct?.serialize(),
110123
props: this.props.size ? this.props.map((p) => p.serialize()) : undefined,
111124
methods: this.methods.size ? this.methods.map((m) => m.serialize()) : undefined,

Diff for: packages/docgen/src/types/constructor.ts

+12-6
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,22 @@ export class DocumentedConstructor extends DocumentedItem<Constructor | Declarat
99
const data = this.data as DeclarationReflection;
1010
const signature = (data.signatures ?? [])[0] ?? data;
1111

12+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
13+
const see = signature.comment?.blockTags?.filter((t) => t.tag === '@see').length
14+
? signature.comment.blockTags
15+
.filter((t) => t.tag === '@see')
16+
.map((t) => t.content.find((c) => c.kind === 'text')?.text.trim())
17+
: undefined;
18+
1219
return {
13-
name: data.name,
14-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
15-
description: signature.comment?.shortText?.trim(),
16-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
17-
see: signature.comment?.tags?.filter((t) => t.tagName === 'see').map((t) => t.text.trim()),
20+
name: signature.name,
21+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
22+
description: signature.comment?.summary?.reduce((prev, curr) => (prev += curr.text), '').trim() || undefined,
23+
see,
1824
access:
1925
data.flags.isPrivate ||
2026
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
21-
signature.comment?.tags?.some((t) => t.tagName === 'private' || t.tagName === 'internal')
27+
signature.comment?.blockTags?.some((t) => t.tag === '@private' || t.tag === '@internal')
2228
? 'private'
2329
: undefined,
2430
// @ts-expect-error

Diff for: packages/docgen/src/types/event.ts

+17-6
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,25 @@ export class DocumentedEvent extends DocumentedItem<Event | DeclarationReflectio
1616
meta = new DocumentedItemMeta(sources, this.config).serialize();
1717
}
1818

19+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
20+
const see = signature.comment?.blockTags?.filter((t) => t.tag === '@see').length
21+
? signature.comment.blockTags
22+
.filter((t) => t.tag === '@see')
23+
.map((t) => t.content.find((c) => c.kind === 'text')?.text.trim())
24+
: undefined;
25+
1926
return {
20-
name: data.name,
21-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
22-
description: signature.comment?.shortText?.trim(),
27+
name: signature.name,
28+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
29+
description: signature.comment?.summary?.reduce((prev, curr) => (prev += curr.text), '').trim() || undefined,
30+
see,
2331
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
24-
see: signature.comment?.tags?.filter((t) => t.tagName === 'see').map((t) => t.text.trim()),
25-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
26-
deprecated: signature.comment?.tags?.some((t) => t.tagName === 'deprecated'),
32+
deprecated: signature.comment?.blockTags?.some((t) => t.tag === '@deprecated')
33+
? signature.comment.blockTags
34+
.find((t) => t.tag === '@deprecated')
35+
?.content.reduce((prev, curr) => (prev += curr.text), '')
36+
.trim() ?? true
37+
: undefined,
2738
// @ts-expect-error
2839
params: signature.parameters
2940
? (signature as SignatureReflection).parameters?.map((p) => new DocumentedParam(p, this.config).serialize())

Diff for: packages/docgen/src/types/item-meta.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { basename, dirname, relative } from 'node:path';
1+
import { basename, relative } from 'node:path';
22
import type { SourceReference } from 'typedoc';
33
import { DocumentedItem } from './item.js';
44
import type { Meta } from '../interfaces/index.js';
@@ -11,7 +11,8 @@ export class DocumentedItemMeta extends DocumentedItem<Meta | SourceReference> {
1111
return {
1212
line: data.line,
1313
file: basename(data.fileName),
14-
path: dirname(data.fileName),
14+
path: undefined,
15+
url: data.url,
1516
};
1617
}
1718

Diff for: packages/docgen/src/types/member.ts

+65-43
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,55 @@ export class DocumentedMember extends DocumentedItem<Member | DeclarationReflect
1010
public override serializer() {
1111
if (this.config.typescript) {
1212
const data = this.data as DeclarationReflection;
13+
const signature = (data.signatures ?? [])[0] ?? data;
1314
let meta;
1415

1516
const sources = data.sources?.[0];
1617
if (sources) {
1718
meta = new DocumentedItemMeta(sources, this.config).serialize();
1819
}
1920

21+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
22+
const see = signature.comment?.blockTags?.filter((t) => t.tag === '@see').length
23+
? signature.comment.blockTags
24+
.filter((t) => t.tag === '@see')
25+
.map((t) => t.content.find((c) => c.kind === 'text')?.text.trim())
26+
: undefined;
27+
2028
const base = {
21-
name: data.name,
22-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
23-
description: data.comment?.shortText?.trim(),
24-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
25-
see: data.comment?.tags?.filter((t) => t.tagName === 'see').map((t) => t.text.trim()),
29+
name: signature.name,
30+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
31+
description: signature.comment?.summary?.reduce((prev, curr) => (prev += curr.text), '').trim() || undefined,
32+
see,
2633
scope: data.flags.isStatic ? 'static' : undefined,
2734
access:
35+
data.flags.isPrivate ||
2836
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
29-
data.flags.isPrivate || data.comment?.tags?.some((t) => t.tagName === 'private' || t.tagName === 'internal')
37+
signature.comment?.blockTags?.some((t) => t.tag === '@private' || t.tag === '@internal')
3038
? 'private'
3139
: undefined,
3240
readonly: data.flags.isReadonly,
41+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
42+
abstract: signature.comment?.blockTags?.some((t) => t.tag === '@abstract') || undefined,
3343
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
34-
abstract: data.comment?.tags?.some((t) => t.tagName === 'abstract'),
35-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
36-
deprecated: data.comment?.tags?.some((t) => t.tagName === 'deprecated'),
44+
deprecated: signature.comment?.blockTags?.some((t) => t.tag === '@deprecated')
45+
? signature.comment.blockTags
46+
.find((t) => t.tag === '@deprecated')
47+
?.content.reduce((prev, curr) => (prev += curr.text), '')
48+
.trim() ?? true
49+
: undefined,
3750
default:
38-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
39-
data.comment?.tags?.find((t) => t.tagName === 'default')?.text.trim() ??
40-
(data.defaultValue === '...' ? undefined : data.defaultValue),
41-
type: data.type ? new DocumentedVarType({ names: [parseType(data.type)] }, this.config).serialize() : undefined,
51+
(data.defaultValue === '...' ? undefined : data.defaultValue) ??
52+
(signature.comment?.blockTags
53+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
54+
?.find((t) => t.tag === '@default')
55+
?.content.reduce((prev, curr) => (prev += curr.text), '')
56+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
57+
.trim() ||
58+
undefined),
59+
type: signature.type
60+
? new DocumentedVarType({ names: [parseType(signature.type)] }, this.config).serialize()
61+
: undefined,
4262
meta,
4363
};
4464

@@ -50,28 +70,47 @@ export class DocumentedMember extends DocumentedItem<Member | DeclarationReflect
5070
throw new Error("Can't parse accessor without getter.");
5171
}
5272

53-
if (!hasSetter) base.readonly = true;
73+
if (!hasSetter) {
74+
base.readonly = true;
75+
}
76+
77+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
78+
const see = getter.comment?.blockTags?.filter((t) => t.tag === '@see').length
79+
? getter.comment.blockTags
80+
.filter((t) => t.tag === '@see')
81+
.map((t) => t.content.find((c) => c.kind === 'text')?.text.trim())
82+
: undefined;
5483

5584
return {
5685
...base,
57-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
58-
description: getter.comment?.shortText?.trim(),
59-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
60-
see: getter.comment?.tags?.filter((t) => t.tagName === 'see').map((t) => t.text.trim()),
86+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
87+
description: getter.comment?.summary?.reduce((prev, curr) => (prev += curr.text), '').trim() || undefined,
88+
see,
6189
access:
62-
getter.flags.isPrivate ||
63-
getter.comment?.tags.some((t) => t.tagName === 'private' || t.tagName === 'internal')
90+
data.flags.isPrivate ||
91+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
92+
getter.comment?.blockTags?.some((t) => t.tag === '@private' || t.tag === '@internal')
6493
? 'private'
6594
: undefined,
6695
readonly: base.readonly || !hasSetter,
67-
abstract: getter.comment?.tags.some((t) => t.tagName === 'abstract'),
68-
deprecated: getter.comment?.tags.some((t) => t.tagName === 'deprecated'),
69-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
96+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
97+
abstract: getter.comment?.blockTags?.some((t) => t.tag === '@abstract') || undefined,
98+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
99+
deprecated: getter.comment?.blockTags?.some((t) => t.tag === '@deprecated')
100+
? getter.comment.blockTags
101+
.find((t) => t.tag === '@deprecated')
102+
?.content.reduce((prev, curr) => (prev += curr.text), '')
103+
.trim() ?? true
104+
: undefined,
70105
default:
71106
base.default ??
72-
getter.comment?.tags.find((t) => t.tagName === 'default')?.text.trim() ??
73-
// @ts-expect-error
74-
getter.defaultValue,
107+
(getter.comment?.blockTags
108+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
109+
?.find((t) => t.tag === '@default')
110+
?.content.reduce((prev, curr) => (prev += curr.text), '')
111+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
112+
.trim() ||
113+
undefined),
75114
type: getter.type ? parseType(getter.type) : undefined,
76115
};
77116
}
@@ -99,20 +138,3 @@ export class DocumentedMember extends DocumentedItem<Member | DeclarationReflect
99138
};
100139
}
101140
}
102-
103-
/*
104-
{ id: 'Client#rest',
105-
longname: 'Client#rest',
106-
name: 'rest',
107-
scope: 'instance',
108-
kind: 'member',
109-
description: 'The REST manager of the client',
110-
memberof: 'Client',
111-
type: { names: [ 'RESTManager' ] },
112-
access: 'private',
113-
meta:
114-
{ lineno: 32,
115-
filename: 'Client.js',
116-
path: 'src/client' },
117-
order: 11 }
118-
*/

0 commit comments

Comments
 (0)