Skip to content

Commit e524865

Browse files
committed
refactor: use eventemitter3
1 parent d9387c3 commit e524865

File tree

3 files changed

+14
-23
lines changed

3 files changed

+14
-23
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"prepublishOnly": "npm run build"
4848
},
4949
"dependencies": {
50+
"eventemitter3": "^4.0.7",
5051
"ky": "^0.30.0",
5152
"node-fetch": "3.2.3"
5253
},

pnpm-lock.yaml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/client/client.ts

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { HTTPError } from 'ky'
2+
import { EventEmitter } from 'eventemitter3'
23
import { resolveApiConfig } from '../request'
34
import { ApiClient } from '../api-client'
45
import { objectPick } from '../utils/objects'
@@ -18,17 +19,14 @@ import type { ApiConfig, ApiConfigResolved } from '../request'
1819

1920
type FollowingUpdatesMoreKey = PersonalUpdate.FollowingUpdatesResponseMoreKey
2021

21-
interface Events {
22-
onRenewToken: (accessToken: string, refreshToken: string) => void
22+
interface EventMap {
23+
renewToken: () => void
2324
}
2425

25-
export class JikeClient {
26+
export class JikeClient extends EventEmitter<EventMap> {
2627
#refreshToken: string
2728
#config: ApiConfigResolved
2829
#client!: Api
29-
#listener: {
30-
[K in keyof Events]?: Set<Events[K]>
31-
} = {}
3230

3331
get accessToken() {
3432
return this.#config.accessToken
@@ -55,6 +53,8 @@ export class JikeClient {
5553
refreshToken = '',
5654
...config
5755
}: ApiConfig & { refreshToken?: string }) {
56+
super()
57+
5858
this.#refreshToken = refreshToken
5959
this.#config = resolveApiConfig(config)
6060
this.createClient()
@@ -274,17 +274,7 @@ export class JikeClient {
274274
result.data[`x-${this.#config.endpointId}-refresh-token`]
275275
this.accessToken = result.data[`x-${this.#config.endpointId}-access-token`]
276276

277-
this.#triggerListener('onRenewToken', [this.accessToken, this.refreshToken])
278-
}
279-
280-
#triggerListener<T extends keyof Events>(
281-
type: T,
282-
args: Parameters<Events[T]>
283-
) {
284-
const listeners = this.#listener[type]
285-
for (const listener of listeners ?? new Set()) {
286-
listener.apply(this, args)
287-
}
277+
this.emit('renewToken')
288278
}
289279

290280
/**
@@ -344,12 +334,6 @@ export class JikeClient {
344334
const json: JikeClientJSON = JSON.parse(data)
345335
return this.fromJSON(json)
346336
}
347-
348-
// TODO: use Event Emitter
349-
addEventListener<T extends keyof Events>(type: T, listener: Events[T]) {
350-
this.#listener[type] ||= new Set()
351-
this.#listener[type]!.add(listener)
352-
}
353337
}
354338

355339
export interface JikeClientJSON extends Omit<ApiConfigResolved, 'beforeRetry'> {

0 commit comments

Comments
 (0)