Skip to content

Commit 45f7e1a

Browse files
fix(GuildAuditLogsEntry): correct mapped AuditLogChange objects (#10438)
* refactor(GuildAuditLogsEntry): correct mapped AuditLogChange objects * test: check union narrowing behaviour of AuditLogChange --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
1 parent 69adc6f commit 45f7e1a

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

packages/discord.js/src/structures/GuildAuditLogsEntry.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,11 @@ class GuildAuditLogsEntry {
172172
* @type {AuditLogChange[]}
173173
*/
174174
this.changes =
175-
data.changes?.map(change => ({ key: change.key, old: change.old_value, new: change.new_value })) ?? [];
175+
data.changes?.map(change => ({
176+
key: change.key,
177+
...('old_value' in change ? { old: change.old_value } : {}),
178+
...('new_value' in change ? { new: change.new_value } : {}),
179+
})) ?? [];
176180

177181
/**
178182
* The entry's id

packages/discord.js/typings/index.d.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4991,11 +4991,13 @@ export interface ApplicationRoleConnectionMetadataEditOptions {
49914991
type: ApplicationRoleConnectionMetadataType;
49924992
}
49934993

4994-
export interface AuditLogChange {
4995-
key: APIAuditLogChange['key'];
4996-
old?: APIAuditLogChange['old_value'];
4997-
new?: APIAuditLogChange['new_value'];
4998-
}
4994+
export type AuditLogChange = {
4995+
[SourceElement in APIAuditLogChange as SourceElement['key']]: {
4996+
key: SourceElement['key'];
4997+
old?: SourceElement['old_value'];
4998+
new?: SourceElement['new_value'];
4999+
};
5000+
}[APIAuditLogChange['key']];
49995001

50005002
export interface AutoModerationAction {
50015003
type: AutoModerationActionType;

packages/discord.js/typings/index.test-d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ import {
104104
Collector,
105105
GuildAuditLogsEntry,
106106
GuildAuditLogs,
107+
type AuditLogChange,
107108
StageInstance,
108109
ActionRowBuilder,
109110
ButtonComponent,
@@ -2171,6 +2172,16 @@ expectType<Promise<User | undefined>>(
21712172
guild.fetchAuditLogs({ type: AuditLogEvent.MessageDelete }).then(al => al.entries.first()?.target),
21722173
);
21732174

2175+
declare const AuditLogChange: AuditLogChange;
2176+
// @ts-expect-error
2177+
expectType<boolean | undefined>(AuditLogChange.old);
2178+
// @ts-expect-error
2179+
expectType<boolean | undefined>(AuditLogChange.new);
2180+
if (AuditLogChange.key === 'available') {
2181+
expectType<boolean | undefined>(AuditLogChange.old);
2182+
expectType<boolean | undefined>(AuditLogChange.new);
2183+
}
2184+
21742185
declare const TextBasedChannel: TextBasedChannel;
21752186
declare const TextBasedChannelTypes: TextBasedChannelTypes;
21762187
declare const VoiceBasedChannel: VoiceBasedChannel;

0 commit comments

Comments
 (0)