KairoApiRegistry
import { router } from '@kairo-js/router'
ev.api를 통해 접근하는 클래스입니다. router.beforeEvents.startup 이벤트 내에서만 조작할 수 있습니다. 레지스트리는 startup이 종료된 후 봉인되며, 이후의 모든 조작은 에러를 발생시킵니다.
메서드
dispose
typescript
dispose(): void이 레지스트리가 보유한 리소스를 해제합니다.
반환값: void
getApiHandler
typescript
getApiHandler(apiName: string): ApiHandler | undefined지정한 API 이름에 등록된 핸들러를 반환합니다. 등록되어 있지 않으면 undefined를 반환합니다.
| 매개변수 | 타입 | 설명 |
|---|---|---|
apiName | string | 조회할 API의 이름 |
반환값: ApiHandler | undefined
getApiNames
typescript
getApiNames(): ReadonlyArray<string>등록된 모든 API 이름을 반환합니다.
반환값: ReadonlyArray<string>
getHookDeclarations
typescript
getHookDeclarations(): readonly InternalHookDeclaration[]등록된 모든 훅 선언을 반환합니다.
반환값: readonly InternalHookDeclaration[]
hook
typescript
hook<TArgs, TReturn>(
targetAddonId: string,
apiName: string,
options: HookOptions<TArgs, TReturn>,
): void다른 애드온의 API 호출을 가로채는 훅을 등록합니다.
| 매개변수 | 타입 | 설명 |
|---|---|---|
targetAddonId | string | 훅을 연결할 애드온의 ID |
apiName | string | 훅을 연결할 API의 이름 |
options | HookOptions<TArgs, TReturn> | 훅 설정 |
반환값: void
typescript
// Mutate args
ev.api.hook('economy-addon', 'economy/getBalance', {
before: async (ctx) => {
ctx.args = { ...ctx.args, audited: true }
},
})
// Post-process result
ev.api.hook('economy-addon', 'economy/getBalance', {
after: async (ctx) => {
ctx.result = { ...ctx.result, taxRate: 0.1 }
},
})register
typescript
register<TArgs, TReturn>(
apiName: string,
handler: (args: TArgs) => TReturn | Promise<TReturn>,
): void이 애드온이 제공하는 API 핸들러를 등록합니다. 같은 addonId 내에서 동일한 apiName을 두 번 등록하면 에러가 발생합니다.
| 매개변수 | 타입 | 설명 |
|---|---|---|
apiName | string | 등록할 API의 이름 |
handler | (args: TArgs) => TReturn | Promise<TReturn> | API가 호출될 때 실행할 핸들러 |
반환값: void
typescript
ev.api.register<{ playerId: string }, { balance: number }>(
'economy/getBalance',
async ({ playerId }) => {
return { balance: getBalance(playerId) }
},
)API 이름 네임스페이싱
충돌을 방지하고 검색 가능성을 높이기 위해 economy/getBalance와 같이 슬래시로 구분된 네임스페이스를 사용하세요.
seal
typescript
seal(): void레지스트리를 닫습니다. 프레임워크 내부에서 호출됩니다. 봉인 후에 register() 또는 hook()을 호출하면 에러가 발생합니다.
반환값: void
setDeclaringAddonId
typescript
setDeclaringAddonId(addonId: string): void선언 애드온의 addonId를 설정합니다. 프레임워크 내부에서 호출됩니다.
| 매개변수 | 타입 | 설명 |
|---|---|---|
addonId | string | 선언 애드온의 ID |
반환값: void