KairoRouter
import { router } from '@kairo-js/router'
router シングルトンとして export されるクラスです。アドオンの初期化・API 呼び出し・イベント購読など、kairo-router の主要機能を提供します。
プロパティ
afterEvents
readonly afterEvents: KairoAfterEvents
after イベントの購読。
beforeEvents
readonly beforeEvents: KairoBeforeEvents
before イベントの購読。
currentTick
readonly currentTick: number
現在の tick 数(getter)。
systemInfo
readonly systemInfo: KairoContext
アドオンのコンテキスト情報(getter)。
メソッド
clearRun
clearRun(runId: number): voidrunInterval() または runTimeout() でスケジュールした実行をキャンセルします。
パラメーター
runId:
numberキャンセルする実行の ID。
返り値: void
emit
emit(eventName: string, payload?: unknown): voidカスタムイベントを送出します。AddonEventRegistry.on() で購読しているハンドラに配信されます。
パラメーター
eventName:
string送出するイベント名。
payload:
unknownイベントに添付するデータ(省略可能)。
返り値: void
getAddonId
getAddonId(): string | undefined自アドオンの addonId を返します。アドオンが登録される前は undefined を返します。
返り値: string | undefined
init
init(properties: AddonProperties, options?: RouterInitOptions): voidアドオンを初期化します。properties.dependencies に "kairo" が含まれていない場合、KairoRouterInitError がスローされます。
パラメーター
properties:
AddonPropertiesアドオンの設定情報。
options:
RouterInitOptions初期化オプション(省略可能)。
返り値: void
standalone モード
必須 dependencies が kairo と kairo-database のみの場合、kairo がインストールされていないワールドでアドオンを自動起動します。詳細は RouterInitOptions を参照してください。
request
request<TReturn>(
targetAddonId: string,
apiName: string,
args?: unknown,
options?: { timeout?: number },
): Promise<TReturn | CanceledResult>結果を待つ形式で API を呼び出します。timeout は tick 単位で、デフォルトは 20 tick です。
パラメーター
targetAddonId:
string呼び出し先アドオンの ID。
apiName:
string呼び出す API 名。
args:
unknownAPI に渡す引数(省略可能)。
options.timeout:
numberタイムアウト(tick 単位、デフォルト 20)。
返り値: Promise<TReturn | CanceledResult>
const result = await router.request<{ balance: number }>(
'economy-addon',
'economy/getBalance',
{ playerId: 'abc123' },
)
if ('canceled' in result) {
console.warn('キャンセルされました:', result.reason)
} else {
console.log('残高:', result.balance)
}runInterval
runInterval(callback: () => void, tickInterval?: number): number指定した tick 間隔で callback を定期実行します。clearRun() に渡す runId を返します。
パラメーター
callback:
() => void定期実行する処理。
tickInterval:
number実行間隔(tick 単位、省略可能)。
返り値: number — runId
runTimeout
runTimeout(callback: () => void, tickDelay?: number): number指定した tick 後に callback を 1 度だけ実行します。clearRun() に渡す runId を返します。
パラメーター
callback:
() => void遅延実行する処理。
tickDelay:
number遅延時間(tick 単位、省略可能)。
返り値: number — runId
send
send(targetAddonId: string, apiName: string, args?: unknown): voidfire-and-forget 形式で API を呼び出します。返答を待ちません。対象アドオンが存在しない・inactive であっても無視されます。
パラメーター
targetAddonId:
string呼び出し先アドオンの ID。
apiName:
string呼び出す API 名。
args:
unknownAPI に渡す引数(省略可能)。
返り値: void
router.send('economy-addon', 'onTransaction', { amount: 50 })delete
delete(key: string): Promise<void>指定したキーの保存済み値を削除します。dependencies または optionalDependencies に "kairo-database" が必要です。standalone モードでは何もせず即座に resolve します。
パラメーター
key:
string削除するキー。
返り値: Promise<void>
has
has(key: string, options?: { addonId?: string }): Promise<boolean>指定したキーが存在する場合に true を返します。dependencies または optionalDependencies に "kairo-database" が必要です。standalone モードでは常に false を返します。
パラメーター
key:
string確認するキー。
options.addonId:
string他のアドオンのストアを参照する場合に指定(省略可能)。
返り値: Promise<boolean>
load
load<T = unknown>(key: string, options?: { addonId?: string }): Promise<T | undefined>ストアから値を読み込みます。キーが存在しない場合は undefined を返します。dependencies または optionalDependencies に "kairo-database" が必要です。standalone モードでは常に undefined を返します。
パラメーター
key:
string読み込むキー。
options.addonId:
string他のアドオンのストアから読み込む場合に指定(省略可能)。
返り値: Promise<T | undefined>
save
save(key: string, value: unknown): Promise<void>指定したキーで値をストアに保存します。dependencies または optionalDependencies に "kairo-database" が必要です。standalone モードでは何もせず即座に resolve します。
パラメーター
key:
string保存先のキー。
value:
unknown保存する値。
返り値: Promise<void>
waitForWorldLoad
waitForWorldLoad(): Promise<void>ワールド読み込みが完了するまで待機します。
返り値: Promise<void>