Skip to content

BeforeHookContext

import type { BeforeHookContext } from '@kairo-js/router'

before 훅 핸들러(HookOptions.before)에 전달되는 컨텍스트 객체입니다.

typescript
type BeforeHookContext<TArgs, TReturn> = {
  args: TArgs
  readonly callerAddonId: string
  cancel(result?: TReturn): never
  setRollbackData(data: unknown): void
}

필드

args

args: TArgs

변경 가능합니다. 변경 사항은 이후의 훅과 핸들러에 전파됩니다.


callerAddonId

readonly callerAddonId: string

호출자의 addonId입니다 (읽기 전용).


cancel(result?)

cancel(result?: TReturn): never

result를 지정하면 핸들러를 건너뛰고 result를 반환합니다 (단락 평가). result를 생략하면 CANCELLED_BY_HOOK을 반환합니다. 반환 타입이 never이므로 TypeScript는 이 호출 이후의 코드를 도달 불가능으로 표시합니다. cancel()을 호출한 직후에는 항상 return하십시오.


setRollbackData(data)

setRollbackData(data: unknown): void

이 훅이 나중에 부수 효과를 되돌려야 할 경우 rollback에서 사용할 데이터를 저장합니다.


사용 예시

typescript
ev.api.hook('economy-addon', 'economy/getBalance', {
  before: async (ctx) => {
    // Mutate args
    ctx.args = { ...ctx.args, audited: true }

    // Short-circuit with cached result
    const cached = cache.get(ctx.args.playerId)
    if (cached) {
      ctx.cancel(cached) // return immediately after cancel()
      return
    }

    // Store data for rollback
    ctx.setRollbackData({ previousArgs: ctx.args })
  },
})

Released under the MIT License.