Skip to content

CancelledResult

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

router.request() がキャンセルされた場合の返り値です。Promise が reject されるのではなく、resolve 値として返されます。

typescript
type CancelledResult = {
  readonly cancelled: true
  readonly reason:
    | 'ADDON_NOT_FOUND'
    | 'ADDON_INACTIVE'
    | 'ADDON_UNRESOLVED'
    | 'CANCELLED_BY_HOOK'
}

フィールド

cancelled

readonly cancelled: true

常に true。型ガードとして使用する。


reason

readonly reason: 'ADDON_NOT_FOUND' | 'ADDON_INACTIVE' | 'ADDON_UNRESOLVED' | 'CANCELLED_BY_HOOK'

キャンセルの理由。


reason の説明

reason説明
ADDON_NOT_FOUND対象 addonId がルーティングテーブルに存在しない
ADDON_INACTIVE対象アドオンが inactive 状態
ADDON_UNRESOLVED対象アドオンが unresolved 状態(依存解決前)
CANCELLED_BY_HOOKbefore フックが ctx.cancel() を呼び出してキャンセルした

使用例

typescript
const result = await router.request<{ balance: number }>(
  'economy-addon',
  'economy/getBalance',
  { playerId: 'abc123' },
)

if ('cancelled' in result) {
  switch (result.reason) {
    case 'ADDON_NOT_FOUND':
      console.warn('economy-addon が見つかりません')
      break
    case 'ADDON_INACTIVE':
      console.warn('economy-addon は現在停止中です')
      break
    case 'CANCELLED_BY_HOOK':
      console.warn('フックによってキャンセルされました')
      break
    default:
      console.warn('キャンセルされました:', result.reason)
  }
} else {
  console.log('残高:', result.balance)
}

Released under the MIT License.