Skip to content

Commit 6ddbb89

Browse files
authored
feat: add config overload for defineEvent (#48)
* feat: add config overload for `defineEvent` * chore: add changeset
1 parent 44aee3a commit 6ddbb89

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

.changeset/dirty-swans-repair.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'harmonix': patch
3+
---
4+
5+
Add configuration overload on `defineEvent`

packages/harmonix/src/runtime/internal/event.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,29 @@ import type { ClientEvents } from 'discord.js'
55
import type { HarmonixEventCallback } from '../../types/runtime/event'
66
import type { HarmonixEvent } from '../../types/module'
77

8-
export const defineEvent = <T extends keyof ClientEvents>(
8+
export function defineEvent<T extends keyof ClientEvents>(
9+
config: { name: T; once?: boolean },
10+
callback: HarmonixEventCallback<T>
11+
): HarmonixEvent
12+
13+
export function defineEvent<T extends keyof ClientEvents>(
914
name: T,
1015
callback: HarmonixEventCallback<T>
11-
) => {
16+
): HarmonixEvent
17+
18+
export function defineEvent<T extends keyof ClientEvents>(
19+
nameOrConfig: T | { name: T; once?: boolean },
20+
callback: HarmonixEventCallback<T>
21+
) {
22+
const name =
23+
typeof nameOrConfig === 'string' ? nameOrConfig : nameOrConfig.name
24+
const once =
25+
typeof nameOrConfig === 'string' ? false : (nameOrConfig.once ?? false)
26+
1227
return {
1328
type: ModuleType.Event,
1429
name,
15-
once: false,
30+
once,
1631
callback
1732
} as HarmonixEvent
1833
}

playground/events/clientReady.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineEvent } from 'harmonix'
22

3-
export default defineEvent('clientReady', (client) => {
3+
export default defineEvent({ name: 'clientReady', once: true }, (client) => {
44
console.log(`Logged in as ${client.user.tag}!`)
55
})

0 commit comments

Comments
 (0)